C# 利用VS編寫一個簡單的網遊客戶端

一.測試連接服務器

1.打開cmd,輸入ping 10.1.230.74

2.輸入telnet,進入telnet界面

3.輸入set localecho,打開本地回顯:

4.連接服務器,輸入命令open 10.1.230.74 3900

二.設計客戶端

1.新建項目

打開VS2022選擇新建Windows窗體應用

如果沒找到,說明沒有安裝相應的配置,可以添加工具

選擇

安裝成功就能找到瞭。

2.設計界面

新建完成後,會直接來到Form1.cs[設計]的窗口,在這裡點擊工具箱就能將控件拖動到設計窗口上

設計窗口如下:

3.控件事件

實現連接到服務器並接受數據

雙擊進入遊戲的Button

添加如下代碼:

private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                //向指定的IP地址的服務器發出連接請求
                tcpClient.Connect("10.1.230.41", 3900);
                listBox1.Items.Add("連接成功!");
                stream = tcpClient.GetStream();
                byte[] data = new byte[1024];
                //判斷網絡流是否可讀            
                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++)
                    {
                        listBox1.Items.Add(msg1[j]);
                         music_play();
                    }
                }
            }
            catch
            {
                listBox1.Items.Add("連接失敗!");
            }
        }

實現客戶端發送數據到服務器

雙擊發送的Button

添加如下代碼:

private void button12_Click(object sender, EventArgs e)
        {
            music_play();
            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("連接已斷開");
            }
            textBox1.Clear();
        }

播放背景音樂

在項目結構中找到Form1.resx文件並打開

選擇音頻,添加資源

註意文件類型是.wav,這裡不能簡單改後綴名,要用格式轉換工具進行轉換。

在代碼中添加播放函數

 private void music_play()
        {
            SoundPlayer sp = new SoundPlayer();
            sp.SoundLocation = @"劉俊宇,劉綺翹,金海天 - 鐵血丹心.wav";       //你的音樂文件名稱,且註意必須是wav文件
            sp.PlayLooping();
        }

該函數在客戶端發送數據時被調用。

定時自動更換遊戲背景圖片

回到Form1.cs[設計]的窗口

在工具箱中找到Timer控件,將它拖動到窗口空白區域

點擊timer1,找到設置中的Interval,設置為30000,將Enable設為true。

準備好背景圖片,在這裡使用的是jpg圖片,將圖片分別命名為從1開始的數字。

雙擊timer1

添加代碼:

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

添加圖片切換函數

void pic_play()
        {
            picture++;   //記得在前面定義變量picture
            string picturePath = @"C:\Users\28205\Pictures\game\" + picture + ".jpg";
            //設置圖片填充
            pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
            pictureBox1.Image = Image.FromFile(picturePath);
            if (picture == 6)
                picture = 0;
        }

三.運行效果

四.總結

使用VS中的控件設計窗口能夠快速拖動佈置,相比於代碼生成控件,方便許多。為控件增添事件也隻需雙擊控件,添加相應操作即可。 

到此這篇關於C# 利用VS編寫一個簡單的網遊客戶端的文章就介紹到這瞭,更多相關C# 編寫網遊客戶端內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: