最近兩天發的博文較少。。因為這個例子太長啦。
下面引用下書上的話,來引導這個例子:
游戲規則如下:
(1)玩家通過 internet 和 坐在同一桌的另外一個玩家對弈,一個玩家選擇黑方,另一個玩家選擇白方。
(2)游戲開始後,計算機自動在15x15的棋盤方格內,以固定的時間間隔,不停的在未放置棋子的位置隨機產生黑色棋子或白色棋子。
(3)玩家的目標是快速單擊自動出現在棋盤上的自己所選顏色的棋子,讓棋子從棋盤上小時,以避免自己的棋子出現在相鄰的位置。
(4)每當棋子從棋盤上小時,具有相應顏色的玩家既得1分。注意,如果玩家單擊了對方的棋子,則對方得1分。
(5)如果棋盤上出現兩個或者兩個以上相鄰的同色棋子,游戲就結束了,改顏色對應的玩家就是失敗者。
游戲功能要求如下:
(1)服務器可以同時服務多桌,每桌允許兩個玩家通過internet 對弈。
(2)允許玩家自由選擇坐哪一桌的哪一方。如果兩個玩家坐在同一桌,雙方應都能看到對方的狀態。兩個玩家均單擊‘開始’按鈕後,游戲才開始。
(3)某桌游戲開始後,服務器以固定的時間間隔同時在15x15的棋盤方格內向該桌隨機地發送黑白兩種顏色的棋子的位置,客戶端程序接收到服務器發送的棋子位置和顏色後,在15x15棋盤相應的位置顯示棋子。
(4)玩家坐到游戲桌座位上後,不論游戲是否開始,該玩家都可以隨時調整服務器發送棋子位置的時間間隔。
(5)游戲開始後,客戶端程序響應鼠標單擊,並根據游戲規則計算玩家的得分。
(6)如果兩個相同顏色的棋子在水平方向或垂直方向是相鄰的,那麼就認為這兩個棋子是相鄰的,這裡不考慮對角線相鄰的情況。
(7)如果相同顏色的棋子出現在相鄰的位置,本局游戲結束。
(8)同一桌的兩個玩家可以聊天。
這個游戲雖然比較小,但卻是“麻雀雖小,五髒俱全”。如果讀者真正理解了編寫的方法,就可以輕松編寫其他各類基於TCP的應用程序。
(打字挺累的,一字一字的照著打下來的。)
------------------------------------------
上面介紹完了,下面直接上圖 傳代碼。。
另外有一點要說的是 這個程序(客戶端和服務端)已經測試過了。
並不是很完美,但是並不影響學習socket TCP編程。挺不錯的一個例子。
先上圖吧,不唠叨了。
圖為兩個客戶端和一個服務端運行的狀況。
完整代碼下載:http://www.BkJia.com/uploadfile/2011/1210/20111210023130590.rar
注:再次說下,關於代碼的是否完美,這裡不作討論。僅用於學習socket編程
Andrew's Blog