C# 利用VS編寫一個(gè)簡(jiǎn)單的網(wǎng)游客戶端
一.測(cè)試連接服務(wù)器
1.打開(kāi)cmd,輸入ping 10.1.230.74
2.輸入telnet,進(jìn)入telnet界面
3.輸入set localecho,打開(kāi)本地回顯:
4.連接服務(wù)器,輸入命令open 10.1.230.74 3900
二.設(shè)計(jì)客戶端
1.新建項(xiàng)目
打開(kāi)VS2022選擇新建Windows窗體應(yīng)用
如果沒(méi)找到,說(shuō)明沒(méi)有安裝相應(yīng)的配置,可以添加工具
選擇
安裝成功就能找到了。
2.設(shè)計(jì)界面
新建完成后,會(huì)直接來(lái)到Form1.cs[設(shè)計(jì)]的窗口,在這里點(diǎn)擊工具箱就能將控件拖動(dòng)到設(shè)計(jì)窗口上
設(shè)計(jì)窗口如下:
3.控件事件
實(shí)現(xiàn)連接到服務(wù)器并接受數(shù)據(jù)
雙擊進(jìn)入游戲的Button
添加如下代碼:
private void button1_Click(object sender, EventArgs e) { try { //向指定的IP地址的服務(wù)器發(fā)出連接請(qǐng)求 tcpClient.Connect("10.1.230.41", 3900); listBox1.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++) { listBox1.Items.Add(msg1[j]); music_play(); } } } catch { listBox1.Items.Add("連接失??!"); } }
實(shí)現(xiàn)客戶端發(fā)送數(shù)據(jù)到服務(wù)器
雙擊發(fā)送的Button
添加如下代碼:
private void button12_Click(object sender, EventArgs e) { music_play(); if (tcpClient.Connected) { //向服務(wù)器發(fā)送數(shù)據(jù) string msg = textBox1.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++) { listBox1.Items.Add(msg2[j]); } } } else { listBox1.Items.Add("連接已斷開(kāi)"); } textBox1.Clear(); }
播放背景音樂(lè)
在項(xiàng)目結(jié)構(gòu)中找到Form1.resx文件并打開(kāi)
選擇音頻,添加資源
注意文件類型是.wav,這里不能簡(jiǎn)單改后綴名,要用格式轉(zhuǎn)換工具進(jìn)行轉(zhuǎn)換。
在代碼中添加播放函數(shù)
private void music_play() { SoundPlayer sp = new SoundPlayer(); sp.SoundLocation = @"劉俊宇,劉綺翹,金海天 - 鐵血丹心.wav"; //你的音樂(lè)文件名稱,且注意必須是wav文件 sp.PlayLooping(); }
該函數(shù)在客戶端發(fā)送數(shù)據(jù)時(shí)被調(diào)用。
定時(shí)自動(dòng)更換游戲背景圖片
回到Form1.cs[設(shè)計(jì)]的窗口
在工具箱中找到Timer控件,將它拖動(dòng)到窗口空白區(qū)域
點(diǎn)擊timer1,找到設(shè)置中的Interval,設(shè)置為30000,將Enable設(shè)為true。
準(zhǔn)備好背景圖片,在這里使用的是jpg圖片,將圖片分別命名為從1開(kāi)始的數(shù)字。
雙擊timer1
添加代碼:
private void timer1_Tick(object sender, EventArgs e) { Thread th = new Thread(pic_play); th.IsBackground = true; th.Start(); }
添加圖片切換函數(shù)
void pic_play() { picture++; //記得在前面定義變量picture string picturePath = @"C:\Users\28205\Pictures\game\" + picture + ".jpg"; //設(shè)置圖片填充 pictureBox1.SizeMode = PictureBoxSizeMode.Zoom; pictureBox1.Image = Image.FromFile(picturePath); if (picture == 6) picture = 0; }
三.運(yùn)行效果
四.總結(jié)
使用VS中的控件設(shè)計(jì)窗口能夠快速拖動(dòng)布置,相比于代碼生成控件,方便許多。為控件增添事件也只需雙擊控件,添加相應(yīng)操作即可。?
到此這篇關(guān)于C# 利用VS編寫一個(gè)簡(jiǎn)單的網(wǎng)游客戶端的文章就介紹到這了,更多相關(guān)C# 編寫網(wǎng)游客戶端內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#創(chuàng)建Windows服務(wù)的實(shí)現(xiàn)方法
這篇文章主要介紹了C#創(chuàng)建Windows服務(wù)的實(shí)現(xiàn)方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-03-03unity實(shí)現(xiàn)簡(jiǎn)單計(jì)算器
這篇文章主要為大家詳細(xì)介紹了unity實(shí)現(xiàn)簡(jiǎn)單計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08C#調(diào)用barTender打印標(biāo)簽示例的實(shí)現(xiàn)
Bartender是最優(yōu)秀的條碼打印軟件,在企業(yè)里使用非常普遍,本文主要介紹了C#調(diào)用barTender打印標(biāo)簽示例的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08