最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一、界面

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

二、代碼

1.播放音頻

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

實現(xiàn)代碼

		private void start_Click(object sender, EventArgs e)
        {
            //新建線程打開音頻文件
            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è)置每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é)議和服務器建立連接

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

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

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

        private void sendButton_Click(object sender, EventArgs e)
        {
            sendCommand();
        }
		public void sendCommand()
        {
            if (tcpClient.Connected)
            {
                //向服務器發(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];
                //接收服務器回復數(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("連接已斷開");
            }

        }

5.信息展示

通過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)
        {
            //新建線程打開音頻文件
            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地址的服務器發(fā)出連接請求

                tcpClient.Connect("10.1.230.74", 3900);
                messages.Items.Add("連接成功!");
                stream = tcpClient.GetStream();
                byte[] data = new byte[1024];
                //判斷網(wǎng)絡流是否可讀            
                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)
            {
                //向服務器發(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];
                //接收服務器回復數(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("連接已斷開");
            }

        }
    }
}

三、效果

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

四、總結(jié)

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

五、參考

http://m.fzitv.net/article/230569.htm

六、源碼

https://github.com/TangtangSix/GameWindows

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

您可能感興趣的文章:

相關(guān)文章

  • C#飛行棋小程序設(shè)計分析

    C#飛行棋小程序設(shè)計分析

    這篇文章主要為大家設(shè)計分析了C#飛行棋小程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • C#中結(jié)構(gòu)(struct)的部分初始化和完全初始化實例分析

    C#中結(jié)構(gòu)(struct)的部分初始化和完全初始化實例分析

    這篇文章主要介紹了C#中結(jié)構(gòu)(struct)的部分初始化和完全初始化,通過實例分析了結(jié)構(gòu)初始化中常見的錯誤及技巧,有助于加深對C#結(jié)構(gòu)(struct)的認識,需要的朋友可以參考下
    2014-09-09
  • C# 遍歷枚舉類型的所有元素

    C# 遍歷枚舉類型的所有元素

    寫個小東西,剛好用到枚舉類型,需要顯示在DropDownList控件中。嘗試了下,用如下方法可以實現(xiàn)
    2013-03-03
  • C# 獲取數(shù)據(jù)庫中所有表名、列名的示例代碼

    C# 獲取數(shù)據(jù)庫中所有表名、列名的示例代碼

    這篇文章主要介紹了C# 獲取數(shù)據(jù)庫中所有表名、列名,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C#對INI文件進行讀寫操作的示例代碼

    C#對INI文件進行讀寫操作的示例代碼

    這篇文章主要為大家詳細介紹了C#對INI文件進行讀寫操作的相關(guān)知識,文中的示例代碼講解詳細,具有一定的學習價值,有需要的小伙伴可以參考一下
    2024-02-02
  • 老生常談C#?中的?StreamReader?和?StreamWriter?類

    老生常談C#?中的?StreamReader?和?StreamWriter?類

    這篇文章主要介紹了老生常談C#?中的?StreamReader?和?StreamWriter?類,StreamReader?和?StreamWriter?位于?System.IO?命名空間中,當您想要讀取或?qū)懭牖谧址臄?shù)據(jù)時,這兩個類都很有用,需要的朋友可以參考下
    2024-06-06
  • 使用淘寶ip地址庫查ip的示例

    使用淘寶ip地址庫查ip的示例

    這篇文章主要介紹了使用淘寶ip地址庫查ip的示例,需要的朋友可以參考下
    2014-03-03
  • 使用windows控制臺調(diào)試服務的方法

    使用windows控制臺調(diào)試服務的方法

    這篇文章主要介紹了使用windows控制臺調(diào)試服務的方法,需要的朋友可以參考下
    2014-02-02
  • Unity實現(xiàn)鼠標點2D轉(zhuǎn)3D進行旋轉(zhuǎn)

    Unity實現(xiàn)鼠標點2D轉(zhuǎn)3D進行旋轉(zhuǎn)

    這篇文章主要為大家詳細介紹了Unity實現(xiàn)鼠標點2D轉(zhuǎn)3D進行旋轉(zhuǎn),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C#實現(xiàn)QQ郵箱發(fā)送郵件

    C#實現(xiàn)QQ郵箱發(fā)送郵件

    今天小編就為大家分享一篇關(guān)于C#實現(xiàn)QQ郵箱發(fā)送郵件,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01

最新評論

开化县| 沽源县| 甘孜县| 宜阳县| 扎赉特旗| 九龙城区| 正安县| 吴江市| 郑州市| 北碚区| 永嘉县| 图木舒克市| 体育| 乌拉特中旗| 栾川县| 虎林市| 望江县| 阿克苏市| 四平市| 观塘区| 新晃| 绿春县| 伊金霍洛旗| 和政县| 汪清县| 乡城县| 江源县| 滦南县| 安塞县| 航空| 始兴县| 铁岭市| 绥阳县| 托克托县| 都安| 伊宁县| 射阳县| 秦皇岛市| 孙吴县| 大渡口区| 昌黎县|