(1)什么是吃子棋?
吃子棋,是小孩子學圍棋的入門棋,其規則部分取自於圍棋,但比圍棋簡單很多。
(2)吃子棋的行棋規則?
1.吃子棋,在行棋時,若一方棋子沒有被打吃,則其必須落子在能夠緊對方棋子氣的位置。
2.吃子棋,當一方棋子處於被打吃的狀態,則可以逃命,而不用緊對方棋子的氣。
3.吃子棋,當一方棋子被吃提,則輸贏即分,吃子方勝。
4.吃子棋,一般有兩種贏棋方式,雙打吃和征吃。
5.吃子棋,起手棋必須位於天元。
(3)應用設計思路
設計此應用的總體思路如下:
DATA:
1.棋盤表示
2.棋子表示
3.計算棋子棋的輔助數據
AI:
1:走法產生(依據行棋規則,產生走法)
2:估值核心(暫時的思路是對雙方一氣,兩氣棋竄進行分析統計,並對雙打吃與征吃進行特別處理)
3:優秀走法搜索引擎(暫時僅使用極窄窗口搜索,一種優化過的alpha-beta搜索)
UI:
cocos2d-x 3.2
繪制棋盤,棋子,開始界面,背景等。
(4)吃子棋AI
鑒於吃子棋的規則,在做AI時,也容易許多。題外話,目前現在圍棋的AI多為雙重隨機-蒙特卡羅算法之類吧,有興趣讀者可以研究下。
1.走法生成:
走法的生成會相對容易很多,因為吃子棋大多數情況下,每一步都要緊對方的氣,而少數情況只能長氣逃命,因此前中期合理走法很少,而游戲很少發展至后期。
2.估值核心:
對於棋面的判斷也相對容易,不需要考慮地域與勢等抽象概念,這些抽象的概念連當下計算機科學家都沒有找到比較好的解決辦法。但這一部分要測試非常難,要微 調很多參數,感知棋力變化。對於未發生提子的葉子結點,判斷形勢與輸贏。1.輪到我下,對方存在一個一氣的棋竄,則我勝利。2.輪到我下,對方不存在一個 一氣的棋竄,而我有兩個一氣的棋竄,則我失敗。3.輪到我下,敵方不存在一氣的棋竄,若我沒有1氣的竄,對方可有兩氣棋竄,若有開始考慮,雙打吃與征吃的 可能。4.同三情況考慮自己,我方僅存在一個一氣竄,則考慮是否被征吃,以及雙打吃。5.都沒有出現,考慮一些其他的額外參數。
3.搜索引擎:PVS,如果有性能需求考慮使用置換表。
寫在最后(這是一個系列文章,此寫在最后僅針對本篇文章):
我曾兼職圍棋入門班的助教,深知陪着4,5歲小孩子下圍棋是一件很頭大的事,因為他們下棋時經常會哭鼻子鬧脾氣刷淘氣。孩子們剛入門時下得是吃子棋,下課回家都是家長陪着下,同樣無論輸贏都是一件頭大的事,但是家長們都說孩子和電腦對戰不會哭鼻子鬧脾氣耍淘氣。
於是,我上網搜索有沒有吃子棋對戰軟件,使家長脫離苦海,也使孩子能夠專心下棋而不是哭鼻子鬧脾氣耍淘氣,但未找到,可能是需求過少的緣故,一般孩子們下一周的吃子棋就可以下真正的圍棋了。
目前,本人正在用業余時間,研發此游戲。歡迎和廣大圍棋愛好者,吃子棋愛好者多多交流。
