基於SDL的C++黑白棋

https://apriljia.com/2018/07/30/%E5%9F%BA%E4%BA%8Esdl%E7%9A%84c%E9%BB%91%E7%99%BD%E6%A3%8B/

寫了一個基於SDL的黑白棋遊戲,分享一下。

黑白棋,又叫翻轉棋(Reversi)、奧賽羅棋(Othello)、蘋果棋或反棋(Anti reversi)。黑白棋在西方和日本很流行。遊戲通過相互翻轉對方的棋子,最後以棋盤上誰的棋子多來判斷勝負。

如果玩家在棋盤上沒有地方可以下子,則該玩家對手可以連下。雙方都沒有棋子可以下時棋局結束,以棋子數目來計算勝負,棋子多的一方獲勝。在棋盤還沒有下滿時,如果一方的棋子已經被對方吃光,則棋局也結束。將對手棋子吃光的一方獲勝。

翻轉棋類似於棋盤遊戲“奧賽羅 (Othello)”,是一種得分會戲劇性變化並且需要長時間思考的策略性遊戲。

翻轉棋的棋盤上有 64 個可以放置黑白棋子的方格(類似於國際象棋和跳棋)。遊戲的目標是使棋盤上自己顏色的棋子數超過對手的棋子數。

當遊戲雙方都不能再按規則落子時,遊戲就結束了。通常,遊戲結束時棋盤上會擺滿了棋子。結束時誰的棋子最多誰就是贏家。

 

我的源代碼在這裏:https://github.com/plutojia/Reversi-SDL

其中ai.h和ai.cpp裏實現了黑白棋的算法,也有各種輔助函數,可以單獨拿出來用,加一個MAIN函數後在小黑窗裏運行如下:

Reversi.cpp中採用了SDL圖形庫爲黑白棋加了一個圖形界面。我是用的VS2015寫的代碼,需要先配置SDL環境才能運行。運行效果如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章