C#编写网游客户端的实现

 更新时间:2021年11月22日 10:23:58   作者:Baker_Streets  
本文主要介绍了C#编写网游客户端,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

一、项目初步设置

1. 新建项目

新建一个WIndows 窗体应用(.Net Framework)

在这里插入图片描述

设置项目名称和位置:

在这里插入图片描述

2. 界面设计

右击工具箱内的常规,点击选择项

在这里插入图片描述

勾选COM 组件下的Windows Media Player

在这里插入图片描述

界面如下:

在这里插入图片描述

二、连接服务器

Form中初始化进入游戏:

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("服务器未启动!");
    }
}

运行结果:

在这里插入图片描述

三、发送数据

设置确定按钮的name为btnSend,双击该按钮:

在这里插入图片描述

//判断连接是否断开
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("连接已断开");
}

运行结果:

请添加图片描述

四、播放背景音乐

设置播放停止按钮的name分别为btnPlaybtnStop:

在这里插入图片描述

播放音乐看不出效果,这里就不放运行结果了。

五、实现游戏背景图片变换

拖入一个timer,设置其EnableTrue

在这里插入图片描述

双击timer,编写代码:

int flag = 0;
private void timer1_Tick(object sender, EventArgs e)
{
    flag++;
    string picturePath = @"C:\Users\16438\Desktop\game1\game1\game1\bin\Debug\img\" + flag + ".jpg";
    pictureBox1.Image = Image.FromFile(picturePath);
    if (flag == 3)
    {
        flag = 0;
    }
}

运行结果:

请添加图片描述

六、总结

C#连接服务器十分方便。

参考

编写一个网游客户端

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

相关文章

  • C#3.0中Lambda表达式详解

    C#3.0中Lambda表达式详解

    在C#3.0中,微软给我带来的一些新特性可能是以前所有开发语言都没有的特性。这无疑大大的体现了C#3.0在开发语言中强大的优势
    2013-09-09
  • C#使用async和await实现异步编程

    C#使用async和await实现异步编程

    本文详细讲解了C#使用async和await实现异步编程的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • 浅析C# 函数的传值与传址

    浅析C# 函数的传值与传址

    这篇文章主要介绍了C# 函数的传值与传址,帮助大家更好的理解和学习c#,感兴趣的朋友可以了解下
    2020-11-11
  • C#基于NPOI生成具有精确列宽行高的Excel文件的方法

    C#基于NPOI生成具有精确列宽行高的Excel文件的方法

    这篇文章主要介绍了C#基于NPOI生成具有精确列宽行高的Excel文件的方法,是C#项目开发中非常实用的技巧,需要的朋友可以参考下
    2014-09-09
  • C#影院售票系统毕业设计(2)

    C#影院售票系统毕业设计(2)

    这篇文章主要介绍了C#影院售票系统毕业设计,介绍了电影院座位的动态绘制、电影信息绑定到窗体中如何展现出来,需要的朋友可以参考下
    2015-11-11
  • C#读取Excel到DataTable的方法示例

    C#读取Excel到DataTable的方法示例

    这篇文章主要介绍了C#读取Excel到DataTable的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04
  • C# 装箱和拆箱的知识回顾

    C# 装箱和拆箱的知识回顾

    本篇文章主要介绍了C#的装箱和拆箱的知识点回顾,对大家的学习和复习具有很好的参考价值,需要的朋友一起来看下吧
    2016-12-12
  • C#中加盐(salting)的实现示例

    C#中加盐(salting)的实现示例

    在密码存储和验证中,加盐是一种增加密码安全性的技术,本文主要介绍了C#中加盐(salting)的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • C# 使用Aspose.Cells 导出Excel的步骤及问题记录

    C# 使用Aspose.Cells 导出Excel的步骤及问题记录

    Aspose.Cells是一款功能强大的Excel文档处理和转换控件,开发人员和客户电脑无需安装Microsoft Excel也能在应用程序中实现类似Excel的强大数据管理功能,对C# 使用Aspose.Cells 导出Excel的步骤及问题记录感兴趣的朋友一起看看吧
    2022-01-01
  • WPF中使用CallerMemberName简化InotifyPropertyChanged的实现

    WPF中使用CallerMemberName简化InotifyPropertyChanged的实现

    这篇文章介绍了WPF中使用CallerMemberName简化InotifyPropertyChanged的实现,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06

最新评论