用C#编写一个简单的网游客户端
文章目录
- 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#编写一个简单的网游客户端相关推荐
- ROS学习笔记十:用C++编写一个简单的服务和客户端
ROS学习笔记十:用C++编写一个简单的服务和客户端 这一节主要介绍如何使用C++编写一个简单的服务和客户端节点. 编写服务节点 由于在前面的练习中,已经向beginner_tutorials软件包中 ...
- 【C#】VS编写简单的网游客户端
文章目录 一.测试连接服务器 二.设计客户端 1.新建项目 2.设计界面 3.代码实现 三.总结 四.参考链接 一.测试连接服务器 1.打开cmd,输入ping 10.1.230.74 2.输入tel ...
- C#编写简单的网游客户端
文章目录 一.连接游戏服务器 二.设计客户端 2.1创建项目 2.2 设计界面 三.功能实现 3.1 连接到服务器并接受服务器发来的数据 3.2 客户端发送数据到服务器 3.3 播放背景音乐 3.4 ...
- VS编写简单的网游客户端
目录 一.测试连接服务器 二.设计客户端 三.连接服务器 1.在Form中初始化进入游戏: 2.设置播放背景音乐 3.实现游戏背景图片变换 四.运行结果 五.总结 六.参考文献 一.测试连接服务器 1 ...
- C#实现简单的网游客户端编程
目录 一.项目创建 1.创建新项目 2.选择窗体应用 二.界面设计 1.图片PictureBox设置 2.总的界面 三.代码实现 1.服务器连接 2.发送确定按钮 3.结果 4.播放背景音乐 5.变换 ...
- unity编写一个简单的小游戏
unity编写一个简单的小游戏 简易fly bird的制作 关于flybird 场景的搭建和素材的导入 使用素材搭建game和scene 制作柱体 bird的script column的sprite ...
- 如何编写一个简单的 Python 程序
本教程将教你如何编写一个简单的 Python 程序.我们将从解释 Python 程序是什么开始,然后继续讨论语法的各个方面,即语言的结构. 什么是 Python? Python是一种越来越受欢迎的编程 ...
- python cs开发框架_用Python编写一个简单的CS架构后门的方法
用Python编写一个简单的CS架构后门的方法 来源:中文源码网 浏览: 次 日期:2019年11月5日 [下载文档: 用Python编写一个简单的CS架构后门的方法.txt ] (友情 ...
- 编写一个最简单的.php,学习猿地- 说明 如果我们要编写一个简单的PHP脚本,需要学习哪些...
说明 如果我们要编写一个简单的 PHP 脚本,需要学习哪些基础知识呢? PHP 基础 PHP 脚本可放置于文档中的任何位置. 标准 的 PHP 脚本以 <?php 开头,以 ?> 结尾: ...
最新文章
- android中获取版本号,如何获取Android应用程序的构建/版本号?
- SpringBoot与Spring的对比
- 磁盘调度算法java代码
- 【摩天好课推荐】1 Python简介
- modelsim仿真中遇到的问题
- 文件包含——概念(一)
- Android之让手机能识别当前app为浏览器类型的APP
- 第六十期:玩了分布式这么久,你不会连Kafka都不清楚吧
- 【机器学习】知识框图总结
- 轻松应对双11,百万级物理和虚拟网络设备的网络智能化实践
- python docker自动化_「docker实战篇」python的docker爬虫技术-移动自动化控制工具appium工具(17)...
- afnetworking 和 asihttprequest 强制修改http连接的host地址
- Spring MVC请求-响应流
- 大数据时代,互联网企业应该如何搭建自己的BI系统?
- 最详细教学--实现win10 多用户同时远程登录内网机--win10+frp+rdpwrap+阿里云服务器
- 谷歌联合金山推出谷歌金山词霸
- 辩证统一和有机统一的比较
- 2022 年十大绩效考核技巧
- Android scroller控件,Android Scroller完全解析
- Nature:交互式语言的语音规划网络