看過網上很多的類似系列教程(包包版網路大廳的+橋牌系統),寫的很深入,感覺比較複雜,初學者不宜上手。我是在學習wcf的時候,發現自己對底層的傳輸原理都沒有搞明白,於是又回頭學習網路傳輸的一些知識,自己寫了乙個簡單的網路遊戲黑白棋,因此也想把學習的乙個過程記錄下來和初學者們一塊交流。我的只是小兒科,還請網友多多包涵,高手們也不要吝惜你們的磚頭。
第一次寫系列教程,心裡沒底,本來自己水平就一般,卻要完成這個命題作文,難煞我了。好歹程式寫的差不多了(不過還沒有最終完成),這裡先把完成的部分分章介紹一下,程式我在慢慢補。
本系列源**tcp網路傳輸參考《c#網路應用高階程式設計》人民郵電出版社,馬駿編,黑白棋遊戲部分為本人(編寫。
寫這個遊戲只是為了我個人理解基於tcp網路遊戲程式設計的基本思路,演算法部分寫的比較亂,沒有優化,不過我都做了注釋,方便大家閱讀。
先說一下黑白棋,又叫反棋(reversi)、奧賽羅棋(othello),蘋果棋,翻轉棋。黑白棋在西方和日本很流行。但是這個遊戲在中國目前還不夠推廣,下棋的水平還不高。黑白棋規則很簡單,只要肯花點腦筋,新手也能玩得很好。因為棋盤小,下一局棋所花的時間也不多。對於黑白棋,有一種說法是:只需要幾分鐘學會它,卻需要一生的時間去精通它(a minute to learn, a lifetime to master)。
早些年文曲星裡面帶的遊戲就喜歡它了,我這個人腦子不開竅,很多遊戲連電腦ai都打不過,好容易整了個能打敗ai的遊戲,還不往死裡玩,嘿嘿。不過我寫的這個黑白棋只是供網路對戰使用,不涉及ai演算法部分(我還不知道怎麼做呢),斗膽發到網上,權作拋磚引玉,廢話少說,進入正題。
遊戲完成的部分
1 網路大廳,可自定義桌數,人數 (完全參照《c#網路應用高階程式設計》,馬老師應該不介意吧)
2 黑白棋遊戲客戶端
2.1 吃子
2.2 奇偶數統計
2.3 輪流下子
2.4 終局勝負提示
未完成部分
1 黑白棋遊戲客戶端
1.1 下子時間限制
1.2 甲方無子可下時,程式判定由乙方下子,甲方丟掉一次機會
1.3 判定任一方無子可下的程式(思路:需要計算盤中空子的列表,然後呼叫已完成的吃子程式,看能否下子,但並不真正下子)
源程式寫的很簡單,介面比較簡陋,只是為了幫助大家更好的理解基於tcp的網路遊戲傳輸的基本原理,還請大家多包涵。
基於TCP的網路遊戲黑白棋系列(三) 遊戲大廳
上一節我們講到了客戶端傳送login命令後,伺服器返回歡迎資訊,完成了乙個簡單的資料傳輸。這一節我們來完成遊戲大廳的基本功能,我們首先思考一下遊戲大廳的基本功能 1 提供可供對弈的遊戲桌,遊戲大廳可供多桌玩家同時遊戲,為了考慮遊戲大廳伺服器的負載能力,應該設定乙個人數的上限和桌數的上限。實際上前面提...
基於TCP的網路遊戲黑白棋系列(一) 建立連線
利用tcp開發網路應用程式,可以採用同步或者非同步的方式,這個遊戲採用的是同步的工作方式,比較簡單,系列教程也主要介紹同步的工作方式。網路通訊的前提就是客戶端和伺服器端的通訊,在伺服器端,程式需要不斷的監聽客戶端是否有連線請求,已保證多個客戶端的連線,伺服器通過套接字識別客戶端 而客戶端只需要指定哪...
基於SDL的C 黑白棋
寫了乙個基於sdl的黑白棋遊戲,分享一下。黑白棋,又叫翻轉棋 reversi 奧賽羅棋 othello 蘋果棋或反棋 anti reversi 黑白棋在西方和日本很流行。遊戲通過相互翻轉對方的棋子,最後以棋盤上誰的棋子多來判斷勝負。如果玩家在棋盤上沒有地方可以下子,則該玩家對手可以連下。雙方都沒有棋...