编写网游客户端

news/2024/10/20 20:38:10/

编写网游客户端

  • 一、目的
  • 二、项目完成
    • 1. 新建项目
    • 2.界面
    • 3.客户端发送数据
    • 4.播放背景音乐
    • 5.实现游戏背景图片变换
  • 三、总结
  • 四、参考

一、目的

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

二、项目完成

1. 新建项目

项目初步设置,建立窗体应用:
在这里插入图片描述
保存地址:
在这里插入图片描述

2.界面

本次实验使用的网游客户端框架来自老师的资料
链接:https://pan.baidu.com/s/1WSkrRTFPuN1N34BsySkeaQ
提取码:5n7o

先通过vs2019将程序程序编译运行,运行结果如下:
在这里插入图片描述
打开窗口设计页面,双击窗体可以跳转至代码编辑页面,将Form1()替换成以下代码:

private NetworkStream stream;
private TcpClient tcpClient = new TcpClient();
public Form1()
{InitializeComponent();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);//Encoding ToEncoding = Encoding.GetEncoding("UTF-8");//Encoding FromEncoding = Encoding.GetEncoding("GB2312");//data=Encoding.Convert(FromEncoding, ToEncoding, data);//string msg = Encoding.UTF8.GetString(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("服务器未启动!");}
}

在头文件中添加using System.Net.Sockets;

运行效果如下:
在这里插入图片描述

可以看到从服务器接收到这些的数据,是正常的,其中一些怪字符是 telnet终端的转义字符,控制字符的移动、字符颜色、响铃等,可以忽略。

3.客户端发送数据

检查发现,客户端上少了个确认的控件,自己添加上去。

这里是引用

以下是“确认”控件控件的代码:

private void button12_Click(object sender, EventArgs e)
{//判断连接是否断开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("连接已断开");}
}

在这里插入图片描述

4.播放背景音乐

添加WindowsMediaPlayer控件:
在这里插入图片描述
代码:

private void button13_Click(object sender, EventArgs e)
{string s = @"E:\CloudMusic\123456.mp3";axWindowsMediaPlayer1.URL = s;
}
private void button14_Click(object sender, EventArgs e)
{//用于暂停正在播放的背景音乐axWindowsMediaPlayer1.Ctlcontrols.pause();
}

分析:
播放和停止播放是通过两个按钮的点击来实现的。当点击播放按钮后,就会播放背景音乐,需要暂停播放,就点击停止按钮就可以实现停止。

这里音乐播放无法看出效果,就不做演示。

5.实现游戏背景图片变换

拖入一个timer,设置其Enable为True:
在这里插入图片描述
双击timer,编写代码:

 int flag = 0;private void timer1_Tick(object sender, EventArgs e){flag++;string picturePath = @"D:\NTEbiancheng\Game\game\bin\Debug\img\" + flag + ".jpg";pictureBox1.Image = Image.FromFile(picturePath);if (flag == 3){flag = 0;}}

演示效果:
在这里插入图片描述

三、总结

对于这一章的作业还是学到了非常多的东西,对窗体应用更加熟悉,同时C#连接服务器十分方便。

四、参考

https://blog.csdn.net/qq_43279579/article/details/109693257
https://jingyan.baidu.com/article/5553fa82cbe8ad65a239340e.html


http://www.ppmy.cn/news/665358.html

相关文章

国产免费大型手机网游《龙印》新版、新服全新开启,聚焦四大看点

4月19日&#xff0c;由乐逗游戏代理运营的手机游戏《龙印》&#xff0c;开启新服、新版本。《龙印》作为国产免费大型手机网游&#xff0c;一直倍受关注。在几个月的公测里&#xff0c;获得了广大玩家的好评。 在经历了漫长的研发期和内测期&#xff0c;《龙印》无论在剧情、系…

免费的手游联运系统可以使用吗?

在手游联运系统方面&#xff0c;发展并不是一成不变&#xff0c;不但每家每户都积极推出“差异化”的产品&#xff0c;市场上还有一大批“免费”的品牌产品&#xff0c;吸引了众多消费者的眼球。 很多人都会问小编的一个问题就是能不能使用免费的手游联运系统&#xff1f;小编…

html5游戏挂机,10款能挂机自动战斗的手机网游

9、传世挂机 《传世挂机》是为玩家潜心打造的放置类热血RPG&#xff0c;精品的传世题材&#xff0c;经典的战法道三职业、传统的MMO成长线、正统的传世视觉体系&#xff0c;高度还原了《传奇世界》。行会集结、热血攻沙、杀人爆物、元神养成&#xff0c;再现热血PK世界&#xf…

云游戏的1.0和2.0

纵观历史&#xff0c;基础科学和基础设施的发展都会开创新的时代。比如说造纸技术的发明&#xff0c;直接大幅提升了知识的传播速度&#xff1b;指南针的发明开启了大航海时代&#xff1b;瓦特改良了蒸汽机&#xff0c;直接将人类带入了蒸汽时代&#xff1b;法拉利发明了发电机…

valorant皮肤怎么获得_瓦罗兰特Valorant白女票任务出来啦!免费皮肤,特工任你选!...

各位已入坑与即将入坑的玩家们大家好! 也许在封测中或透过其他渠道,你已经见过开发中的《VALORANT》商店、一些武器造型,和其他造型内容。 我们团队希望玩家在进行游戏时,可以透过收集造型与个人化装饰,来更加凸显玩法风格、激发更好的对战表现,或单纯彰显个人对于武器造…

开源linux网游服务端,一款免费的相当精致的网游..REGNUM ONLINE FOR LINUX

└─(23:35:%)── ./RegnumOnlineInstall_64 ──(六, 5月28)─┘ application-specific initialization failed: Cant find a usable init.tcl in the following directories: /installkitvfs/lib/tcl /installkitvfs/lib/tcl8.6 /home/damon/src/installkit-1.3.0/out/lib/t…

vivo 游戏中心低代码平台的提效秘诀

作者&#xff1a;vivo 互联网服务器团队- Chen Wenyang 本文根据陈文洋老师在“2022 vivo开发者大会"现场演讲内容整理而成。公众号回复【2022 VDC】获取互联网技术分会场议题相关资料。 在互联网流量见顶和用户需求分层的背景下&#xff0c;如何快速迭代产品功能&#xf…

虚幻引擎程序化资源生成框架PCG 之Extents Modifier 和 Bounds Modifier

Extents Modifier 和 Bounds Modifier这两个节点看起来很像&#xff0c;都是修改Point的Bouding Box&#xff0c;查看一下源代码&#xff0c;简单看一下它们的区别 文章目录 两个节点的代码对比Bounds Modifier源代码 Bounds Modifier源代码 小结 两个节点的代码对比 Bounds M…