通訊機制與流程圖 |
本單元將結合TCP聊天室伺服端程式與單機五子棋的程式完成一個真正的五子棋線上遊戲,基本通訊機制與聊天室的一對一交談相同,只是交換的訊息變成下棋的資訊,A客戶下棋的位置(黑子)會傳到B客戶,B客戶收到訊息程式會自動繪製A客戶的下棋位置(白子),反之亦然。與塗鴉牆同樣的,伺服端程式完全不必修改!當然為了能夠判斷黑白棋連線與否,必須有個陣列記住所有棋子的位置,在本單元中這是一個數字陣列,1代表黑子,2代表白子。 修改五子棋程式的表單介面如下 有關網路設定的物件可以直接自聊天室客戶端表單複製物件過來,但是注意相關的物件名稱必須保持一樣(TextBox與Button等等)。右下方是原來的訊息顯示視窗TextBox4(可以變小一點),清除重玩按鍵應該是Button2。 命名空間: 此部分應加到程式碼頁面最上方(Public Class Form1的上方) 通訊相關程式碼: 連線伺服器 Send副程式: 關閉連線的程式 監聽訊息的程式 上面是監聽的程式,主要改變是刪除廣播與私密訊息的Case "1"與Case "2",加入處理下棋訊息的Case "5"。 如果傳來的訊息是"C"表示清除棋盤,程式碼與之前的清除重完相似,但是多了一行Panel1.Enabled=True,在此我們是用這個屬性的設定控制輪到誰下棋?如果輪到自己下棋Panel1就可以接受點選,否則Panel1.Enabled=False,就暫時不能下棋了! 如果傳來的不是"C"那就應該是對手下棋的座標了!先切割X與Y座標,呼叫Chess畫出代表對方的白子,S陣列的對應位置上也必須註記為2,此時表示對手下好棋了,應該讓Panel1.Enabled=True,你就可以下棋啦!當然此時也要檢查對手的白子是否連線了,如果是,就是你輸了! 下棋程式修改 變成雙人下棋之後下棋時就必須告知對方我下在哪裡?因此Panel1_MouseDown應修改加上傳訊息的程式碼: 線上測試應該像這樣: |