欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#基于TCP實(shí)現(xiàn)簡(jiǎn)單游戲客戶端的完整實(shí)例

 更新時(shí)間:2021年11月28日 16:01:53   作者:醉意丶千層夢(mèng)  
這篇文章主要給大家介紹了關(guān)于C#基于TCP實(shí)現(xiàn)簡(jiǎn)單游戲客戶端的相關(guān)資料,通過(guò)本文介紹的方法可以直接實(shí)現(xiàn)游戲客戶端,是個(gè)非常適合學(xué)習(xí)的實(shí)例需要的朋友可以參考下

一、界面

左上方播放音頻按鈕和停止播放下面是圖片展示再下面是進(jìn)入游戲以及退出游戲最后是命令輸入框右邊是消息框

二、代碼

1.播放音頻

需要用到WindowsMediaPlayer組件,在常規(guī)組件的選擇項(xiàng)里面可以找到。

實(shí)現(xiàn)代碼

		private void start_Click(object sender, EventArgs e)
        {
            //新建線程打開(kāi)音頻文件
            new Thread(new ThreadStart(beginPlay)).Start();
        }

        private void stop_Click(object sender, EventArgs e)
        {
            //暫定播放
            axWindowsMediaPlayer1.Ctlcontrols.pause();
        }
 		public void beginPlay()
        {
            string s = @"G:\VisualStudioProject\GameWindows\resources\music.mp3";
            axWindowsMediaPlayer1.URL = s;
        }

2.播放圖片

使用定時(shí)器,使能并且設(shè)置每1000ms觸發(fā)一次事件

事件函數(shù)

        private String[] pictures={ "\\1.jpg", "\\2.jpg","\\3.jpg","\\4.jpg","5.jpg","6.jpg"};
        private int postion = 0;
        private void timer1_Tick(object sender, EventArgs e)
        {
            pictureBox1.Image = Image.FromFile("G:\\VisualStudioProject\\GameWindows\\resources\\"+pictures[(++postion)%pictures.Length]);
        }

3.登錄和退出游戲

采用tcp協(xié)議和服務(wù)器建立連接

public void connection()
        {
            try
            {
                //向指定的IP地址的服務(wù)器發(fā)出連接請(qǐng)求

                tcpClient.Connect("10.1.230.74", 3900);
                messages.Items.Add("連接成功!");
                stream = tcpClient.GetStream();
                byte[] data = new byte[1024];
                //判斷網(wǎng)絡(luò)流是否可讀            
                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++)
                    {
                        messages.Items.Add(msg1[j]);
                    }
                }

            }
            catch (System.Exception ex)
            {
                messages.Items.Add(ex.Message);
            }
        }

登錄游戲建立tcp連接,并且禁用登錄按鈕使能退出按鈕退出游戲則端口tcp連接,并且禁用退出按鈕以及使能登錄按鈕

private void quitGame_Click(object sender, EventArgs e)
        {
            tcpClient.Close();
            beginGame.Enabled = true;
            quitGame.Enabled = false;
        }

4.命令交互

通過(guò)tcp向服務(wù)器發(fā)送數(shù)據(jù)

        private void sendButton_Click(object sender, EventArgs e)
        {
            sendCommand();
        }
		public void sendCommand()
        {
            if (tcpClient.Connected)
            {
                //向服務(wù)器發(fā)送數(shù)據(jù)
                string msg = command.Text;
                Byte[] outbytes = System.Text.Encoding.Default.GetBytes(msg + "\n");
                stream.Write(outbytes, 0, outbytes.Length);
                byte[] data = new byte[1024];
                //接收服務(wù)器回復(fù)數(shù)據(jù)
                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++)
                    {
                        messages.Items.Add(msg2[j]);
                    }
                }
            }
            else
            {
                messages.Items.Add("連接已斷開(kāi)");
            }

        }

5.信息展示

通過(guò)listbox展示所有接收到的消息

6.最終代碼

using System;
using System.Drawing;
using System.Net;
using System.Net.Sockets;
using System.Windows.Forms;
using System.Text;
using System.Threading;

namespace GameWindows
{
    public partial class Form1 : Form
    {
        private NetworkStream stream;
        private TcpClient tcpClient = new TcpClient();
        private String[] pictures={ "\\1.jpg", "\\2.jpg","\\3.jpg","\\4.jpg","5.jpg","6.jpg"};
        private int postion = 0;
        public Form1()
        {
            InitializeComponent();  
            CheckForIllegalCrossThreadCalls = false;
            quitGame.Enabled = false;
            axWindowsMediaPlayer1.Hide();
            pictureBox1.Image = Image.FromFile("G:\\VisualStudioProject\\GameWindows\\resources\\"+pictures[postion]);
        }

        private void start_Click(object sender, EventArgs e)
        {
            //新建線程打開(kāi)音頻文件
            new Thread(new ThreadStart(beginPlay)).Start();
        }

        private void stop_Click(object sender, EventArgs e)
        {
            //暫定播放
            axWindowsMediaPlayer1.Ctlcontrols.pause();
        }

        private void beginGame_Click(object sender, EventArgs e)
        {

            Thread thread = new Thread(new ThreadStart(connection));
            thread.Start();
            beginGame.Enabled = false;
            quitGame.Enabled = true;

        }

 

        private void quitGame_Click(object sender, EventArgs e)
        {
            tcpClient.Close();
            beginGame.Enabled = true;
            quitGame.Enabled = false;
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            pictureBox1.Image = Image.FromFile("G:\\VisualStudioProject\\GameWindows\\resources\\"+pictures[(++postion)%pictures.Length]);
        }



        private void sendButton_Click(object sender, EventArgs e)
        {
            sendCommand();
        }


        public void connection()
        {
            try
            {
                //向指定的IP地址的服務(wù)器發(fā)出連接請(qǐng)求

                tcpClient.Connect("10.1.230.74", 3900);
                messages.Items.Add("連接成功!");
                stream = tcpClient.GetStream();
                byte[] data = new byte[1024];
                //判斷網(wǎng)絡(luò)流是否可讀            
                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++)
                    {
                        messages.Items.Add(msg1[j]);
                    }
                }

            }
            catch (System.Exception ex)
            {
                messages.Items.Add(ex.Message);
            }
        }

        public void beginPlay()
        {
            string s = @"G:\VisualStudioProject\GameWindows\resources\music.mp3";
            axWindowsMediaPlayer1.URL = s;
        }

        public void sendCommand()
        {
            if (tcpClient.Connected)
            {
                //向服務(wù)器發(fā)送數(shù)據(jù)
                string msg = command.Text;
                Byte[] outbytes = System.Text.Encoding.Default.GetBytes(msg + "\n");
                stream.Write(outbytes, 0, outbytes.Length);
                byte[] data = new byte[1024];
                //接收服務(wù)器回復(fù)數(shù)據(jù)
                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++)
                    {
                        messages.Items.Add(msg2[j]);
                    }
                }
            }
            else
            {
                messages.Items.Add("連接已斷開(kāi)");
            }

        }
    }
}

三、效果

為了方便展示圖片,播放間隔設(shè)置的1000ms。

四、總結(jié)

C#在網(wǎng)絡(luò)編程上特別的方便。

五、參考

http://www.dbjr.com.cn/article/230569.htm

六、源碼

https://github.com/TangtangSix/GameWindows

到此這篇關(guān)于C#基于TCP實(shí)現(xiàn)簡(jiǎn)單游戲客戶端的文章就介紹到這了,更多相關(guān)C#實(shí)現(xiàn)游戲客戶端內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Unity通過(guò)代碼修改按鈕點(diǎn)擊效果

    Unity通過(guò)代碼修改按鈕點(diǎn)擊效果

    這篇文章主要為大家詳細(xì)介紹了Unity通過(guò)代碼修改按鈕點(diǎn)擊效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • c#之圓形無(wú)標(biāo)題欄橢圓窗體的實(shí)現(xiàn)詳解

    c#之圓形無(wú)標(biāo)題欄橢圓窗體的實(shí)現(xiàn)詳解

    本篇文章是對(duì)c#中圓形無(wú)標(biāo)題欄橢圓窗體的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • 深入理解C#窗體關(guān)閉事件

    深入理解C#窗體關(guān)閉事件

    很多初學(xué)者都想把默認(rèn)的C#關(guān)閉按鈕事件弄明白,本文就介紹一下C#窗體關(guān)閉事件,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • c#學(xué)習(xí)之30分鐘學(xué)會(huì)XAML

    c#學(xué)習(xí)之30分鐘學(xué)會(huì)XAML

    一個(gè)界面程序的核心,無(wú)疑就是界面和后臺(tái)代碼,而xaml就是微軟為構(gòu)建應(yīng)用程序界面而創(chuàng)建的一種描述性語(yǔ)言,也就是說(shuō),這東西是搞界面的
    2016-11-11
  • C#讀取命令行參數(shù)的方法

    C#讀取命令行參數(shù)的方法

    這篇文章主要介紹了C#讀取命令行參數(shù)的方法,可實(shí)現(xiàn)讀取程序輸入命令行的所有參數(shù),便于調(diào)試程序,比較簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2015-04-04
  • C#?線程簡(jiǎn)單介紹及使用詳情

    C#?線程簡(jiǎn)單介紹及使用詳情

    這篇文章主要介紹了C#?線程簡(jiǎn)單介紹及使用詳情,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • C#自定義字符串補(bǔ)0函數(shù)實(shí)例

    C#自定義字符串補(bǔ)0函數(shù)實(shí)例

    這篇文章主要介紹了C#自定義字符串補(bǔ)0函數(shù),通過(guò)一個(gè)自定義函數(shù)形式實(shí)例分析了C#操作字符串實(shí)現(xiàn)補(bǔ)零操作的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • C#實(shí)現(xiàn)矩陣加法、取負(fù)、數(shù)乘、乘法的方法

    C#實(shí)現(xiàn)矩陣加法、取負(fù)、數(shù)乘、乘法的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)矩陣加法、取負(fù)、數(shù)乘、乘法的方法,涉及C#針對(duì)矩陣的數(shù)學(xué)運(yùn)算相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2015-08-08
  • c# 文件操作(移動(dòng),復(fù)制,重命名)

    c# 文件操作(移動(dòng),復(fù)制,重命名)

    這篇文章主要介紹了c# 如何對(duì)文件操作(移動(dòng),復(fù)制,重命名),幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-12-12
  • C#中把Datatable轉(zhuǎn)換為Json的5個(gè)代碼實(shí)例

    C#中把Datatable轉(zhuǎn)換為Json的5個(gè)代碼實(shí)例

    這篇文章主要介紹了C#中把Datatable轉(zhuǎn)換為Json的5個(gè)代碼實(shí)例,需要的朋友可以參考下
    2014-04-04

最新評(píng)論