文章目录
一、连接游戏服务器
1.连接校园网,输入ping 10.1.230.74
2.输入telnet,进入telnet界面
系统中的telnet客户端是关闭状态。即Win10默认没有安装telnet功能。
参考文献:‘telnet’ 不是内部或外部命令,也不是可运行的程序
或批处理文件。
3.输入 set localecho,打开本地回显
4.连接服务器,输入命令open 10.1.230.74 3900
连接游戏服务器成功!!!
二、设计客户端
2.1创建项目
2.2 设计界面
三、功能实现
3.1 连接到服务器并接受服务器发来的数据
双击进入游戏按钮,生成相关函数
代码如下:
注意定义:
private void button1_Click(object sender, EventArgs e)
{
try
{
//向指定的IP地址的服务器发出连接请求
tcpClient.Connect("10.1.230.74", 3900);
listBox1.Items.Add("连接成功!");
stream = tcpClient.GetStream();
byte[] data = new byte[1024];
//判断网络流是否可读
if (stream.CanRead)
{
int len = stream.Read(data, 0, data.Length);
string msg = Encoding.Default.GetString(data, 0, data.Length);
string str = "\r\n";
char[] str1 = str.ToCharArray();
string[] msg1 = msg.Split(str1);
for (int j = 0; j < msg1.Length; j++)
{
listBox1.Items.Add(msg1[j]);
}
}
}
catch
{
listBox1.Items.Add("连接失败!");
}
}
3.2 客户端发送数据到服务器
双击发送按钮生成相应函数
private void button3_Click(object sender, EventArgs e)
{
if (tcpClient.Connected)
{
//向服务器发送数据
string msg = textBox2.Text;
Byte[] outbytes = System.Text.Encoding.Default.GetBytes(msg + "\n");
stream.Write(outbytes, 0, outbytes.Length);
byte[] data = new byte[1024];
//接收服务器回复数据
if (stream.CanRead)
{
int len = stream.Read(data, 0, data.Length);
string msg1 = Encoding.Default.GetString(data, 0, data.Length);
string str = "\r\n";
char[] str1 = str.ToCharArray();
string[] msg2 = msg1.Split(str1);
for (int j = 0; j < msg2.Length; j++)
{
listBox1.Items.Add(msg2[j]);
}
}
}
else
{
listBox1.Items.Add("连接已断开");
}
textBox2.Clear();
}
3.3 播放背景音乐
添加WindowsMediaPlayer控件,选择常规后,右键,点击选择项
勾选上
添加成功!
但我们添加这个控件后会在界面上显示,不好看,修改这个属性,生成的界面上就没有
添加播放暂停按钮,功能代码如下:
private void button13_Click(object sender, EventArgs e)
{
string music = @"D:\新建文件夹2\天龙八部.mp3";
axWindowsMediaPlayer1.URL = music;
}
private void button14_Click(object sender, EventArgs e)
{
//暂停播放
axWindowsMediaPlayer1.Ctlcontrols.pause();
}
3.4 自动变换游戏背景图片
- 首先拉一个timer控件到空白区域,和一个pictureBox到Form框中
- 在timer属性中设置变换图片的时间间隔
timer的时间间隔的设置方式
在界面设计下,选中timer控件,接着在右边的属性区域中,找到Interval后,设置它的值,默认值为100(0.1s)。还需要将Enable的值修改为true。
- 双击timer控件进入代码编辑界面
private int picture = 0;
private void timer1_Tick(object sender, EventArgs e)
{
picture++;
string picturePath= @"D:\新建文件夹2\image\" + picture+".jpg";
pictureBox1.Image = Image.FromFile(picturePath);
if(picture==6)
{
picture = 0;
}
}