C#游戏客户端编程

一、测试连接服务器

windows+R打开cmd,先ping一下服务器的网址,看是否能连通(这是学校的内网,没连学校内网是ping不同的):
在这里插入图片描述

首先打开Telnet服务:
在这里插入图片描述

使用telnet命令进入 telnet 终端界面。
在这里插入图片描述

输入 set localecho,打开本地回显。
在这里插入图片描述

连接游戏服务器,输入命令 open 10.1.230.74 3900,进入初始界面:
在这里插入图片描述

自己按要求创建人物,然后就可以玩了,但没有客户端界面不够美观,所以我们要自己写一个。

二、编写客户端

1.新建项目和界面设计

使用VS2019创建一个窗体应用:
在这里插入图片描述

添加音乐播放组件:
在这里插入图片描述
在这里插入图片描述

拖动控件设计窗口,最终界面如下:

在这里插入图片描述

2.连接服务器

代码(注意相关引用using System.Net.Sockets;):

private NetworkStream stream;
private TcpClient tcpClient = new TcpClient();
 private void button10_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 = "rn";
                    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.发送数据

双击确定按钮,设计它的点击事件:

private void button12_Click(object sender, EventArgs e)
        {
            //music_play();
            if (tcpClient.Connected)
            {
                //向服务器发送数据
                string msg = textBox1.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 = "rn";
                    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("连接已断开");
            }
            textBox1.Clear();
        }

嘿嘿,忘了截图了,宿舍连不上校园网就看不到反馈。反正就是按照它左边的框里的要求输入名称呀密码呀啥的,服务器接收到后继续执行下一指令,然后再输入,如此反复而已。

4.播放背景音乐

播放button的点击事件:

  private void button13_Click(object sender, EventArgs e)
        {
            string s = @"C:Users86150VSprojectgame怎么办-SEVENTEEN.mp3";
            axWindowsMediaPlayer1.URL = s;
        }

 private void button14_Click(object sender, EventArgs e)
        {
            axWindowsMediaPlayer1.Ctlcontrols.pause();//停止播放
        }

由于是播放音乐,图片无法展示其效果。

5.变换背景

双击timer1控件编写函数:

 private void timer1_Tick(object sender, EventArgs e)
        {
            picture++;
            string picturePath = @"C:Users86150VSprojectgamepic" + picture + ".jpg";
            //设置图片填充
            pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;//StretchImage为拉伸填满整个box
            pictureBox1.Image = Image.FromFile(picturePath);
            if (picture == 5)
                picture = 0;
        }

在图片路径里加入几张图片,以1、2、3…命名:
在这里插入图片描述
效果:
在这里插入图片描述

三、总结

在老师的布局基础上添加按键功能时,其它都没什么问题,但音乐播放怎么也实现不了,一直都会报一个异常System.BadImageFormatException:“未能加载文件或程序集“AxInterop.WMPLib, Version=1.0.0.0, Culture=neutral, Publi,我的media player不能再这个代码中使用,所以重新建了一个项目,仿照了老师的布局,再次使用media player时就没有问题了。

参考资料

https://blog.csdn.net/weixin_45873781/article/details/109827713
https://blog.csdn.net/qq_43279579/article/details/109693257

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>