文章目录

  • 1,代码
  • 2,结果如下
  • 3,完整代码
  • 4,总结
  • 5,参考

1,代码

先新建项目

设计界面
记住,还有拖动一个timer到picturebox上

双击开始游戏,进入代码编写界面

private void button4_Click(object sender, EventArgs e){tcpClient = new TcpClient();//套接字建立连接socket_send = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);IPEndPoint point = new IPEndPoint(IPAddress.Parse("10.1.230.74"), 3900);socket_send.Connect(point);try{//向指定的IP地址的服务器发送连接请求tcpClient.Connect("10.1.230.74", 3900);listBox1.Items.Add("连接成功");stream = tcpClient.GetStream();receive_stream();//接收字节流并显示在屏幕上}catch{listBox1.Items.Add("服务器未启动");}}

双击发送,今进入代码编写

private void button1_Click(object sender, EventArgs e){if (tcpClient.Connected){string action = textBox1.Text.ToString();listBox1.Items.Add("输入的信息为:" + action);send_stream(action);receive_stream();}else{listBox1.Items.Add("连接已断开");}}

双击播放,进入代码编写

private void button2_Click(object sender, EventArgs e){player.Load();player.Play();}
private void music_play(){SoundPlayer sp = new SoundPlayer();sp.SoundLocation = @"许嵩.wav";       //你的音乐文件名称,且注意必须是wav文件sp.PlayLooping();}

进入resx文件,按照以下文件添加要播放的音乐

将字节流用GBK格式编码在listbox里显示

void receive_stream(){byte[] receive_data = new byte[1024];//定义编码格式System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);//为使用GB2312做准备System.Text.Encoding GBK = System.Text.Encoding.GetEncoding("GBK");if (stream.CanRead){int len = stream.Read(receive_data, 0, receive_data.Length);string msg = GBK.GetString(receive_data, 0, receive_data.Length);string str = "\r\n";char[] str1 = str.ToCharArray();//乱码集合string[] messy_code = { "??[2J ", "[5m", "[44m", "[37;0m", "[1;33m", "[1;32m", "[1;31m" };string[] msg1 = msg.Split(str1);//以换行符为分隔符for (int j = 0; j < msg1.Length; j++)//逐行显示{//过滤乱码msg1[j] = msg1[j].Replace(messy_code[0], " ");msg1[j] = msg1[j].Replace(messy_code[1], " ");msg1[j] = msg1[j].Replace(messy_code[2], " ");msg1[j] = msg1[j].Replace(messy_code[3], " ");msg1[j] = msg1[j].Replace(messy_code[4], " ");msg1[j] = msg1[j].Replace(messy_code[5], " ");msg1[j] = msg1[j].Replace(messy_code[6], " ");listBox1.Items.Add(msg1[j]);}}}

双击退出,进行编写

 void send_stream(string str){System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);//为使用GB2312做准备System.Text.Encoding GBK = System.Text.Encoding.GetEncoding("GBK");byte[] buffer = GBK.GetBytes(str + "\n");stream.Write(buffer, 0, buffer.Length);}private void button5_Click(object sender, EventArgs e){{if (stream != null)//关闭连接,关闭流{stream.Close();tcpClient.Close();socket_send.Close();}listBox1.Items.Add("已经退出游戏");}}

双击停止,进行编辑

private void button3_Click(object sender, EventArgs e){player.Stop();}

进行图像填充,依旧双击

private void timer1_Tick(object sender, EventArgs e){picture++;string picturePath = @"C:\\Users\\hp\source\\repos\\game\\game\\game\" + picture + ".jpg";//设置图片填充pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;pictureBox1.Image = Image.FromFile(picturePath);if (picture == 5)picture = 0;}

2,结果如下

由于30太长,不太容易看到时间变化,我录屏是设置的1000,即1秒钟换一张图片

C#连接游戏并播放音乐

3,完整代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Net;
using System.Media;
using System.Threading;

namespace game
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private NetworkStream stream;
private TcpClient tcpClient;
SoundPlayer player = new SoundPlayer(“C:/Users/hp/Desktop/许嵩.wav”);
Socket socket_send;
private int picture = 0;

    private void button4_Click(object sender, EventArgs e){tcpClient = new TcpClient();//套接字建立连接socket_send = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);IPEndPoint point = new IPEndPoint(IPAddress.Parse("10.1.230.74"), 3900);socket_send.Connect(point);try{//向指定的IP地址的服务器发送连接请求tcpClient.Connect("10.1.230.74", 3900);listBox1.Items.Add("连接成功");stream = tcpClient.GetStream();receive_stream();//接收字节流并显示在屏幕上}catch{listBox1.Items.Add("服务器未启动");}}private void button1_Click(object sender, EventArgs e){if (tcpClient.Connected){string action = textBox1.Text.ToString();listBox1.Items.Add("输入的信息为:" + action);send_stream(action);receive_stream();}else{listBox1.Items.Add("连接已断开");}}private void music_play(){SoundPlayer sp = new SoundPlayer();sp.SoundLocation = @"许嵩.wav";       //你的音乐文件名称,且注意必须是wav文件sp.PlayLooping();}/** 将字节流用GBK格式编码在listbox里显示*/void receive_stream(){byte[] receive_data = new byte[1024];//定义编码格式System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);//为使用GB2312做准备System.Text.Encoding GBK = System.Text.Encoding.GetEncoding("GBK");if (stream.CanRead){int len = stream.Read(receive_data, 0, receive_data.Length);string msg = GBK.GetString(receive_data, 0, receive_data.Length);string str = "\r\n";char[] str1 = str.ToCharArray();//乱码集合string[] messy_code = { "??[2J ", "[5m", "[44m", "[37;0m", "[1;33m", "[1;32m", "[1;31m" };string[] msg1 = msg.Split(str1);//以换行符为分隔符for (int j = 0; j < msg1.Length; j++)//逐行显示{//过滤乱码msg1[j] = msg1[j].Replace(messy_code[0], " ");msg1[j] = msg1[j].Replace(messy_code[1], " ");msg1[j] = msg1[j].Replace(messy_code[2], " ");msg1[j] = msg1[j].Replace(messy_code[3], " ");msg1[j] = msg1[j].Replace(messy_code[4], " ");msg1[j] = msg1[j].Replace(messy_code[5], " ");msg1[j] = msg1[j].Replace(messy_code[6], " ");listBox1.Items.Add(msg1[j]);}}}void send_stream(string str){System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);//为使用GB2312做准备System.Text.Encoding GBK = System.Text.Encoding.GetEncoding("GBK");byte[] buffer = GBK.GetBytes(str + "\n");stream.Write(buffer, 0, buffer.Length);}private void button5_Click(object sender, EventArgs e){{if (stream != null)//关闭连接,关闭流{stream.Close();tcpClient.Close();socket_send.Close();}listBox1.Items.Add("已经退出游戏");}}private void button2_Click(object sender, EventArgs e){player.Load();player.Play();}private void button3_Click(object sender, EventArgs e){player.Stop();}private void timer1_Tick(object sender, EventArgs e){picture++;string picturePath = @"C:\\Users\\hp\source\\repos\\game\\game\\game\" + picture + ".jpg";//设置图片填充pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;pictureBox1.Image = Image.FromFile(picturePath);if (picture == 5)picture = 0;}}

}

4,总结

利用c#写可视化界面和QT差不多,都是拖动组件,然后写代码,不过比QT要写的简单一些

5,参考

C#编写游戏客户端

用C#编写一个简单的网游客户端相关推荐

  1. ROS学习笔记十:用C++编写一个简单的服务和客户端

    ROS学习笔记十:用C++编写一个简单的服务和客户端 这一节主要介绍如何使用C++编写一个简单的服务和客户端节点. 编写服务节点 由于在前面的练习中,已经向beginner_tutorials软件包中 ...

  2. 【C#】VS编写简单的网游客户端

    文章目录 一.测试连接服务器 二.设计客户端 1.新建项目 2.设计界面 3.代码实现 三.总结 四.参考链接 一.测试连接服务器 1.打开cmd,输入ping 10.1.230.74 2.输入tel ...

  3. C#编写简单的网游客户端

    文章目录 一.连接游戏服务器 二.设计客户端 2.1创建项目 2.2 设计界面 三.功能实现 3.1 连接到服务器并接受服务器发来的数据 3.2 客户端发送数据到服务器 3.3 播放背景音乐 3.4 ...

  4. VS编写简单的网游客户端

    目录 一.测试连接服务器 二.设计客户端 三.连接服务器 1.在Form中初始化进入游戏: 2.设置播放背景音乐 3.实现游戏背景图片变换 四.运行结果 五.总结 六.参考文献 一.测试连接服务器 1 ...

  5. C#实现简单的网游客户端编程

    目录 一.项目创建 1.创建新项目 2.选择窗体应用 二.界面设计 1.图片PictureBox设置 2.总的界面 三.代码实现 1.服务器连接 2.发送确定按钮 3.结果 4.播放背景音乐 5.变换 ...

  6. unity编写一个简单的小游戏

    unity编写一个简单的小游戏 简易fly bird的制作 关于flybird 场景的搭建和素材的导入 使用素材搭建game和scene 制作柱体 bird的script column的sprite ...

  7. 如何编写一个简单的 Python 程序

    本教程将教你如何编写一个简单的 Python 程序.我们将从解释 Python 程序是什么开始,然后继续讨论语法的各个方面,即语言的结构. 什么是 Python? Python是一种越来越受欢迎的编程 ...

  8. python cs开发框架_用Python编写一个简单的CS架构后门的方法

    用Python编写一个简单的CS架构后门的方法 来源:中文源码网    浏览: 次    日期:2019年11月5日 [下载文档:  用Python编写一个简单的CS架构后门的方法.txt ] (友情 ...

  9. 编写一个最简单的.php,学习猿地- 说明 如果我们要编写一个简单的PHP脚本,需要学习哪些...

    说明 如果我们要编写一个简单的 PHP 脚本,需要学习哪些基础知识呢? PHP 基础 PHP 脚本可放置于文档中的任何位置. 标准 的 PHP 脚本以 <?php 开头,以 ?> 结尾: ...

最新文章

  1. android中获取版本号,如何获取Android应用程序的构建/版本号?
  2. SpringBoot与Spring的对比
  3. 磁盘调度算法java代码
  4. 【摩天好课推荐】1 Python简介
  5. modelsim仿真中遇到的问题
  6. 文件包含——概念(一)
  7. Android之让手机能识别当前app为浏览器类型的APP
  8. 第六十期:玩了分布式这么久,你不会连Kafka都不清楚吧
  9. 【机器学习】知识框图总结
  10. 轻松应对双11,百万级物理和虚拟网络设备的网络智能化实践
  11. python docker自动化_「docker实战篇」python的docker爬虫技术-移动自动化控制工具appium工具(17)...
  12. afnetworking 和 asihttprequest 强制修改http连接的host地址
  13. Spring MVC请求-响应流
  14. 大数据时代,互联网企业应该如何搭建自己的BI系统?
  15. 最详细教学--实现win10 多用户同时远程登录内网机--win10+frp+rdpwrap+阿里云服务器
  16. 谷歌联合金山推出谷歌金山词霸
  17. 辩证统一和有机统一的比较
  18. 2022 年十大绩效考核技巧
  19. Android scroller控件,Android Scroller完全解析
  20. Nature:交互式语言的语音规划网络

热门文章

  1. vscode java环境_VSCode中Java开发环境的配置方法
  2. CSDN文章质量检测系统
  3. 【OpenCv】图像的数据增强:HSV色彩空间介绍以及与BGR空间的转换
  4. 服务器的运行寿命一般有多久?服务器怎么选?
  5. 神经网络编译器TVM
  6. git仓库与vscode关联
  7. 谷歌封杀猎豹移动等600个APP,开发者如何绝处逢生?
  8. 不用动手就能清洁美白你的牙齿,360°无死角微笑一百分丨钛空智慧星球推荐...
  9. QQ如何不接收群邮件(杂)
  10. python jinja2_python中Jinja2是什么?如何使用?