游戏客户端编程
游戲客戶端編程
- 界面調整
- 代碼實現
- 服務器連接
- 發送數據
- 資源文件
- 背景音樂
- 圖片
- 運行
- 參考鏈接
編寫一個網游客戶端,游戲服務器的校園內網IP地址為 10.1.230.74,端口為3900,采用TCP連接。
game1.zip
界面調整
初始界面:
我們可以發現,客戶端上少了個確認發送的控件,需要我們自己添加上去。
代碼實現
服務器連接
private NetworkStream stream;private TcpClient tcpClient = new TcpClient();public Form1(){InitializeComponent();try{//向指定的IP地址的服務器發出連接請求tcpClient.Connect("10.1.230.74", 3900);listBox1.Items.Add("連接成功!");stream = tcpClient.GetStream();byte[] data = new byte[1024];//判斷網絡流是否可讀 if (stream.CanRead){int len = stream.Read(data, 0, data.Length);//Encoding ToEncoding = Encoding.GetEncoding("UTF-8");//Encoding FromEncoding = Encoding.GetEncoding("GB2312");//data=Encoding.Convert(FromEncoding, ToEncoding, data);//string msg = Encoding.UTF8.GetString(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]);}}}catch{listBox1.Items.Add("服務器未啟動!");}}發送數據
發送控件的代碼:
private void button12_Click(object sender, EventArgs e){//判斷連接是否斷開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("連接已斷開");}}資源文件
將要展示的圖片、音樂文件放入bin→Debug文件夾中
背景音樂
在代碼開頭添需要引入using System.Media;
//音樂SoundPlayer sp = new SoundPlayer();sp.SoundLocation = @"輕快.wav";sp.PlayLooping();圖片
30秒轉換一次,參數為30000
//圖片System.Timers.Timer timer = new System.Timers.Timer();timer.Interval = 30000;int i = 0;timer.Elapsed += delegate{i++;Image image = Image.FromFile(i + ".jpg");//圖片的文件名從1.jpg開始pictureBox1.Image = image;if (i == 3) i = 0;//當文件名為3.jpg時即將i重置為0};timer.Start();運行
可以看到從服務器接收到這些的數據,是正常的,其中一些怪字符是 telnet終端的轉義字符,控制字符的移動、字符顏色、響鈴等,可以忽略。
參考鏈接
總結
- 上一篇: linux内核的I2C子系统详解4——i
- 下一篇: 嵌入式基础认识1:存储器(如RAM、RO