網站首頁 編程語言 正文
一.測試連接服務器
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中的控件設計窗口能夠快速拖動布置,相比于代碼生成控件,方便許多。為控件增添事件也只需雙擊控件,添加相應操作即可。?
原文鏈接:https://blog.csdn.net/qq_45659777/article/details/121483467
相關推薦
- 2022-11-17 Android自定義一個view?ViewRootImpl繪制流程示例_Android
- 2022-04-08 Swift實現簡單計算器_Swift
- 2022-06-08 Spring Cloud Alibaba Nacos 客戶端服務注冊心跳和健康監測
- 2024-02-17 pytorch花式索引提取topk的張量
- 2022-03-12 Android列表點擊事件定義的一些思考_Android
- 2022-05-06 C#迭代器方法介紹_C#教程
- 2024-03-06 CMake編譯Qt,生成簡單窗口
- 2022-07-21 Pandas常用數據結構
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支