日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

游戏客户端编程

發布時間:2023/12/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 游戏客户端编程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

游戲客戶端編程

      • 界面調整
      • 代碼實現
          • 服務器連接
          • 發送數據
          • 資源文件
          • 背景音樂
          • 圖片
      • 運行
      • 參考鏈接

編寫一個網游客戶端,游戲服務器的校園內網IP地址為 10.1.230.74,端口為3900,采用TCP連接。

  • 連接成功后,可以將服務器發來的消息不停地顯示在 listbox 中;
  • 客戶端要發給服務器的數據,通過 textbox輸入 或者點擊button;
  • 能夠播放背景音樂;
  • 每隔30秒,變換一次游戲背景圖片。
  • 參考代碼框架見 game1.zip
    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終端的轉義字符,控制字符的移動、字符顏色、響鈴等,可以忽略。

    參考鏈接

  • C#實現網游客戶端與服務器的連接
  • 愛給配樂庫
  • .NET System.Timers.Timer的原理和使用(開發定時執行程序)
  • System.TImers.Timer的使用
  • 總結

    以上是生活随笔為你收集整理的游戏客户端编程的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。