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

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

 更新時間:2021年11月28日 16:01:53   作者:醉意丶千層夢  
這篇文章主要給大家介紹了關于C#基于TCP實現(xià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.播放圖片

使用定時器,使能并且設置每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("連接已斷開");
            }

        }
    }
}

三、效果

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

四、總結

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

五、參考

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

六、源碼

https://github.com/TangtangSix/GameWindows

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

您可能感興趣的文章:

相關文章

  • C#飛行棋小程序設計分析

    C#飛行棋小程序設計分析

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

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

    這篇文章主要介紹了C#中結構(struct)的部分初始化和完全初始化,通過實例分析了結構初始化中常見的錯誤及技巧,有助于加深對C#結構(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文件進行讀寫操作的相關知識,文中的示例代碼講解詳細,具有一定的學習價值,有需要的小伙伴可以參考一下
    2024-02-02
  • 老生常談C#?中的?StreamReader?和?StreamWriter?類

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

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

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

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

    使用windows控制臺調試服務的方法

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

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

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

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

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

最新評論

黔西| 玛沁县| 措美县| 荆门市| 哈尔滨市| 昭苏县| 澳门| 阿拉尔市| 盐边县| 大港区| 玉树县| 建宁县| 文水县| 西乡县| 博罗县| 芦溪县| 石嘴山市| 凯里市| 东莞市| 安庆市| 湖口县| 井冈山市| 台南县| 栖霞市| 扎鲁特旗| 勐海县| 台东县| 万源市| 福贡县| 鹤山市| 岫岩| 临洮县| 九龙坡区| 甘孜县| 康乐县| 潞城市| 调兵山市| 武强县| 五峰| 松滋市| 北辰区|