iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#编写游戏客户端的实现代码
  • 396
分享到

C#编写游戏客户端的实现代码

2024-04-02 19:04:59 396人浏览 独家记忆
摘要

一、连接客户端原理流程图 二、功能要求 1)连接成功后,可以将服务器发来的消息不停地显示在 listbox 中; 2) 客户端要发给服务器的数据,通过 textbox输入 或者点

一、连接客户端原理流程图

在这里插入图片描述

二、功能要求

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

三、代码实现

新建一个windows窗体应用

在这里插入图片描述

下面是界面的布置,记得还有一个Timer,并且timer要使能,interval也要设置,这里3000为3秒

在这里插入图片描述

定义的变量


 private NetworkStream stream;
        private tcpClient tcpClient;

        SoundPlayer player = new SoundPlayer("D:/新建文件夹 (2)/p3r68-cdx67/59tp0-mg2nx.wav");
        //定义发送数据的套接字
        Socket socket_send;

receiver_stream函数,功能是接收网络流并显示在listbox里显示,其中关于GBK的编码请参考这里

C# 中使用GB2312或GBK编码报错



        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]);
                }
            }
        }

send_stream函数,发送网络流的函数


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 start_game_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 end_game_Click(object sender, EventArgs e)
        {
            if (stream != null)//关闭连接,关闭流
            {
                stream.Close();
                tcpClient.Close();
                socket_send.Close();
            }
            listBox1.Items.Add("已经退出游戏");
        }

获取textbox里的值并发


 private void send_msg_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("连接已断开");
            }
        }

播放音乐,这里的play好像就是在子线程播放,所以不用写新线程


 private void play_Click(object sender, EventArgs e)
        {
            player.Load();
            player.Play();
        }

停止播放


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

定时切换图片


 private void timer1_Tick(object sender, EventArgs e)
        {
            Thread th = new Thread(play_pic);
            th.IsBackground=true;
            th.Start();

        }
        void play_pic()
        {
            flag++;
            string picturePath = @"D:\testpic\" + flag + ".jpg";
            pictureBox1.Image = Image.FromFile(picturePath);
            if (flag == 5)
            {
                flag = 0;
            }
        }

效果

在这里插入图片描述

四、总结

C#做可视化界面很方便,比Qt还简单,代码格式有点像Java,基本上可以直接上手了,搭建网络连接也很方便,不过有时候界面的设置不小心就看过了。这次还是遇到麻烦的,本来想用Windows media player来播放音乐,但因为电脑一直更新走的,版本不适配用不了,最后用的是自带的播放器,只能播放wav文件,直接改后缀还不行,需要转化一下。

五、参考

编写一个网游客户端

C# 中使用GB2312或GBK编码报错

到此这篇关于C#编写游戏客户端的文章就介绍到这了,更多相关C#编写游戏内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C#编写游戏客户端的实现代码

本文链接: https://www.lsjlt.com/news/158412.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#编写游戏客户端的实现代码
    一、连接客户端原理流程图 二、功能要求 1)连接成功后,可以将服务器发来的消息不停地显示在 listbox 中; 2) 客户端要发给服务器的数据,通过 textbox输入 或者点...
    99+
    2024-04-02
  • C#编写网游客户端的实现
    目录一、项目初步设置 二、连接服务器三、发送数据四、播放背景音乐五、实现游戏背景图片变换六、总结参考一、项目初步设置 1. 新建项目 新建一个WIndows 窗体应用(.Net F...
    99+
    2024-04-02
  • C++编写的WebSocket服务端客户端实现示例代码
    目录使用过标准的libwebsockets服务端库测试过,主要是短小精悍,相对于libwebsockets不需要依赖zlib和openssl 以及其他库,直接make就可以使用了,l...
    99+
    2024-04-02
  • C#如何编写网游客户端
    这篇文章主要为大家展示了“C#如何编写网游客户端”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C#如何编写网游客户端”这篇文章吧。一、项目初步设置 新建项目新建一个WIndows 窗体应用(.N...
    99+
    2023-06-25
  • FTP客户端c代码功能实现
    现在市面上有很多免费的FTP软件:如FileZilla ,那如果想自己在代码中实现与ftp服务器的上传下载文件该如何实现那?  本质上ftp协议就是TCP基础上建立的一种协议,具体如下。 FTP 概述 文件传输协议(FTP)作为网络共享文件...
    99+
    2023-09-24
    服务器 网络 linux
  • C#基于TCP如何实现简单游戏客户端
    本篇内容介绍了“C#基于TCP如何实现简单游戏客户端”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、界面左上方播放音频按钮和停止播放下面是...
    99+
    2023-06-21
  • ​java实现客户端调用的代码怎么写
    下面是一个简单的Java客户端调用示例代码: import java.io.BufferedReader; import java....
    99+
    2023-10-23
    ​java
  • C#编写一个网游客户端的完整步骤
    目录一、认识NetworkStream(网络流)二、连接服务器三、客户端向服务器发送数据四、实现播放背景音乐五、实现游戏背景图片变换六、小结七、参考资料总结本过程是使用Virtual...
    99+
    2024-04-02
  • C#基于TCP实现简单游戏客户端的完整实例
    目录一、界面二、代码1.播放音频2.播放图片3.登录和退出游戏4.命令交互5.信息展示6.最终代码三、效果四、总结五、参考一、界面 左上方播放音频按钮和停止播放下面是图片展示再下面...
    99+
    2024-04-02
  • C#利用VS编写一个简单的网游客户端
    目录一.测试连接服务器二.设计客户端三.运行效果四.总结一.测试连接服务器 1.打开cmd,输入ping 10.1.230.74 2.输入telnet,进入telnet界面 3....
    99+
    2024-04-02
  • C#如何利用VS编写简单的网游客户端
    本篇内容介绍了“C#如何利用VS编写简单的网游客户端”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一.测试连接服务器打开cmd,输入ping...
    99+
    2023-06-21
  • C语言实现猜拳游戏的代码怎么写
    本篇内容主要讲解“C语言实现猜拳游戏的代码怎么写”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言实现猜拳游戏的代码怎么写”吧!一、游戏逻辑打印选择菜单(1.play,0.exit)提示玩家0...
    99+
    2023-06-30
  • Java实现猜数字小游戏代码怎么编写
    Java实现猜数字小游戏代码怎么编写,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。▲游戏规则:系统随机生成一个范围0&mdash;&mdash;...
    99+
    2023-06-26
  • C#编写一个网游客户端的完整步骤是怎样的
    这期内容当中小编将会给大家带来有关C#编写一个网游客户端的完整步骤是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。使用Virtual Studio 2019实现。一、认识NetworkStream(...
    99+
    2023-06-21
  • C/C++实现精灵游戏的示例代码
    目录前言创建win32项目游戏效果核心代码前言 采用面向过程的遍程思想,通过acllib图形库来实现。 acllib下载地址:acllib tom,jerry,dog,heart以及...
    99+
    2024-04-02
  • Java实现坦克大战小游戏代码如何编写
    Java实现坦克大战小游戏代码如何编写,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。小游戏介绍:红色坦克是我们的操纵坦克,黑色是敌人坦克。上下左右键控制坦克移动...
    99+
    2023-06-26
  • C语言实现三子棋小游戏的代码怎么写
    本篇内容介绍了“C语言实现三子棋小游戏的代码怎么写”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!基本思路:1.创建一个游戏选择面板.2.创建...
    99+
    2023-06-08
  • java实现小游戏编程源代码
    这是一个简单的猜数字游戏的 Java 源代码:```import java.util.Scanner;public class Gu...
    99+
    2023-09-22
    java
  • C++代码实现五子棋小游戏
    简单C++代码实现五子棋任务,供大家参考,具体内容如下 首先先展示一下运行的图片 话也不多说,直接分不同代码板块来介绍程序不同功能以及是如何实现的 首先,对于一个五子棋程序,我们要...
    99+
    2024-04-02
  • 基于C语言实现三子棋游戏的代码怎么写
    这篇“基于C语言实现三子棋游戏的代码怎么写”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“基于C语言实现三子棋游戏的代码怎么写...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作