嘿!我是目录

  • 前言
  • 一、创建项目
  • 二、界面设计
  • 三、代码
    • 3.1 连接服务器并接收数据
    • 3.2 客户端发送数据到服务器
    • 3.3 播放背景音乐
    • 3.4 定时自动更换游戏背景图片
  • 四、实验结果
  • 小小的总结
  • 参考文献

前言

编写一个网游客户端,游戏服务器的校园内网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++;   //记得在前面定义变量picturestring 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编写简单的网游客户端

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

  1. 【C#】游戏客户端编程

    目录 一.NetworkStream网络流介绍 二.连接服务器 三.客户端向服务器发送数据 四.实现背景音乐的播放功能 五.实现游戏背景变换 六.总结 七.参考 一.NetworkStream网络流介 ...

  2. java网络编程作业基于UDP简单聊天窗口,图形化界面,包含客户端和服务端

    //郑州轻工业大学 //题号:实验四 第二题 //题目:使用基于UDP的网络编程方法,完成客户端和服务器间的聊天功能.要求图形界面. java网络编程作业 基于UDP简单聊天窗口,图形化界面,包含客户 ...

  3. TCP/IP网络编程之基于TCP的服务端/客户端(一)

    TCP/IP网络编程之基于TCP的服务端/客户端(一) 理解TCP和UDP 根据数据传输方式的不同,基于网络协议的套接字一般分为TCP套接字和UDP套接字.因为TCP套接字是面向连接的,因此又称为基于 ...

  4. pygame网络游戏_5_5:网络编程_游戏客户端【终章!】

    项目源码地址:https://github.com/zxf20180725/pygame-jxzj,求赞求星星~ 1.本章效果 2.回顾 哎呀呀,好久没更新了,这几天一直在搞我的pygame新项目仙剑 ...

  5. 【游戏开发】基于MMORPG的游戏客户端逻辑效率开发思路

    思考:如何提升游戏逻辑开发效率 提升游戏逻辑开发效率的关键在于:游戏新增或修改功能时,需要尽可能减少程序需要重复开发的代码量. 下面主要考虑以下三种减少编码工作量的方法: <1>.尽可能将 ...

  6. Py:递归求解汉诺塔,简单的几行编程可以搞定很高层的三柱汉诺塔游戏

    Py:递归求解汉诺塔,简单的几行编程可以搞定很高层的三柱汉诺塔游戏 目录 输出结果 核心代码 输出结果 核心代码 def hanoi(n,x,y,z):if n==1:print(x,'--→',z) ...

  7. kafka java编程demo_Kafka简单客户端编程实例

    今天,我们给大家带来一篇如何利用Kafka的API进行客户端编程的文章,这篇文章很简单,就是利用Kafka的API创建一个生产者和消费者,生产者不断向Kafka写入消息,消费者则不断消费Kafka的消 ...

  8. TCP/IP网络编程之基于TCP的服务端/客户端(二)

    回声客户端问题 上一章TCP/IP网络编程之基于TCP的服务端/客户端(一)中,我们解释了回声客户端所存在的问题,那么单单是客户端的问题,服务端没有任何问题?是的,服务端没有问题,现在先让我们回顾下服 ...

  9. 游戏编程笔记-起步(一)一个简单的游戏-贪吃蛇

    二 游戏编程起步 1.一个简单的游戏-贪吃蛇 1.贪吃蛇游戏剖析 1)游戏的目标.在不被撞死的前提下,吃掉奖子增加自己的长度,来完成升级. 2)游戏中的物体.蛇,墙壁,奖子. 3)动作.蛇移动,蛇吃奖 ...

最新文章

  1. 不借助第三方 Windows 7搞定无法删除文件
  2. PostgreSQL流复制之二:pgpool-II实现PostgreSQL数据库集群(转发+整理)
  3. @ConfigurationProperties 注解
  4. java源码 1.8_Java源码下载和阅读(JDK1.8/Java 11)
  5. variable `xxx' has initializer but incomplete type
  6. 创业公司如何做数据分析(四)ELK日志系统
  7. SAP Commerce web service 的扩展
  8. 呆在实验室到深夜的小随笔
  9. Android - Glide4.4.0使用
  10. Android官方开发文档Training系列课程中文版:管理音频播放之控制APP的音量与播放
  11. php运行的四个黄金组合,PHP168与Phpwind强势整合 打造黄金组合
  12. 系统学习深度学习(二) --自编码器,DA算法,SDA,稀疏自编码器
  13. 【SpringBoot】整合jdbc
  14. android模拟器检测常用方法,Android模拟器检测方案优化
  15. 常用服务和开放端口对照表
  16. 如何让 PPT 中的多张图大小一致?
  17. 历年至今TVB剧集目录(持续更新...我已看过的推荐)
  18. 汇编语言更象是野球拳,哈哈……
  19. VBA中Sheets(String)和Sheets(Long)的速度
  20. 手持PDA和手机有什么区别?

热门文章

  1. TOF,双目,结构光,激光雷达等传感器及相关技术
  2. android照片编辑软件,美易照片编辑器下载
  3. 几招搞定Windows 7累计补丁包的安装
  4. Python图像处理丨详解图像去雾处理方法
  5. LTE信令流程——附着
  6. Java支付宝当面付demo实例配置沙箱
  7. Goldengate Monitor Agent 安装
  8. Thin LUN 和 Thick LUN
  9. 有各组方差怎么算组间平方和_#excel单因素方差分析#excel如何计算组间离差平方和...
  10. 如何oracle调试存储过程