基于C#简单的游戏客户端编程(VS)

前言

编写一个网游客户端,游戏服务器的校园内网IP地址为 10.1.230.74,端口为3900,采用TCP连接。
1)连接成功后,可以将服务器发来的消息不停地显示在 listbox 中;
2) 客户端要发给服务器的数据,通过 textbox输入 或者点击button;
3) 能够播放背景音乐;
4) 每隔30秒,变换一次游戏背景图片。

这里的IP地址要在连接笔主本校的WiFi网络的情况下,才能连接成功。

一、创建项目

  • 笔主这里因为电脑存储空间限制,用的是VS2017版本,其他版本可能略有不同,但内容是一致的。

在这里插入图片描述

二、界面设计

  • 一个listBox,几个button,几个textBox,和一个pictureBox

在这里插入图片描述

三、代码

3.1 连接服务器并接收数据

  • 双击 进入游戏 的button
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]);
                         music_play();
                    }
                }
            }
            catch
            {
                listBox1.Items.Add("连接失败!");
            }
        }

3.2 客户端发送数据到服务器

  • 双击 确定 的button
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 = "\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("连接已断开");
            }
            textBox1.Clear();
        }

3.3 播放背景音乐

  • 双击打开

在这里插入图片描述

在这里插入图片描述

  • 选择一个.wav音频文件

注意文件类型是.wav,这里不能简单改后缀名,要用格式转换工具进行转换。
一个可以下载.wav格式音频的网站:下载wav音频

在这里插入图片描述

  • 在代码中添加播放函数
private void music_play()
        {
            SoundPlayer sp = new SoundPlayer();
            sp.SoundLocation = @"D:\VSdaima\playgame\playgame\费玉清 - 夏之旅.wav";       //你的音乐文件名称,且注意必须是wav文件
            sp.PlayLooping();
        }

3.4 定时自动更换游戏背景图片

  • 回到Form1.cs[设计]的窗口
  • 在工具箱中找到Timer控件,将它拖动到窗口空白区域

在这里插入图片描述

  • 点击timer1,找到设置中的Interval,设置为1000,将Enable设为true

在这里插入图片描述

  • 准备好背景图片,在这里使用的是jpg图片,将图片分别命名为从1开始的数字

在这里插入图片描述

  • 双击timer,添加代码:
 private void timer1_Tick(object sender, EventArgs e)
        {
            Thread th = new Thread(pic_play);
            th.IsBackground = true;
            th.Start();
        }
       
  • 添加图片切换函数
    在添加前要先设置路径(存放前面图片的路径):

在这里插入图片描述

  • SizeMode选择StrechImage,会把PictureBox图片框铺满,自适应图片框的大小
    在这里插入图片描述
  • 代码
void pic_play()
       {
            picture++;   //记得在前面定义变量picture
            string picturePath = @"D:\VSdaima\playgame\playgame\tu\" + picture + ".jpeg";
            //设置图片填充
            pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
            pictureBox1.Image = Image.FromFile(picturePath);
            if (picture == 5)
                picture = 0;
        }

四、实验结果

  • 最终实验结果:

请添加图片描述

小小的总结

C#做可视化界面很方便,新手小白都可以直接上手了,只需要拖动控件,双击控件就可以编写对应的函数。

搭建网络连接也很方便,不过此次的IP只能在笔主本校的WiFi网络情况下才能ping成功,其他网络不行!!!笔主踩进的坑。。。

在连接一个网络IP的时候,可以先在 win+R->cmd里,先ping试一下。

参考文献

  1. telnet不是内部或外部命令
  2. 【C#】VS编写简单的网游客户端
  • 0
    点赞
  • 6
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页
评论

打赏作者

YouthBlood9

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值