人機博弈,吃子棋遊戲(一)基本介紹

2021-06-25 23:45:58 字數 1265 閱讀 6573

吃子棋,是小孩子學圍棋的入門棋,其規則部分取自於圍棋,但比圍棋簡單很多。

1.吃子棋,在行棋時,若一方棋子沒有被打吃,則其必須落子在能夠緊對方棋子氣的位置。

2.吃子棋,當一方棋子處於被打吃的狀態,則可以逃命,而不用緊對方棋子的氣。

3.吃子棋,當一方棋子被吃提,則輸贏即分,吃子方勝。

4.吃子棋,一般有兩種贏棋方式,雙打吃和徵吃。

5.吃子棋,起手棋必須位於天元。

設計此應用的總體思路如下:

data:

1.棋盤表示

2.棋子表示

3.計算棋子棋的輔助資料

ai:1:走法產生(依據行棋規則,產生走法)

2:估值核心(暫時的思路是對雙方一氣,兩氣棋竄進行分析統計,並對雙打吃與徵吃進行特別處理)

3:優秀走法搜尋引擎(暫時僅使用極窄視窗搜尋,一種優化過的alpha-beta搜尋)

ui:cocos2d-x 3.2

繪製棋盤,棋子,開始介面,背景等。

鑑於吃子棋的規則,在做ai時,也容易許多。題外話,目前現在圍棋的ai多為雙重隨機-蒙特卡羅演算法之類吧,有興趣讀者可以研究下。

1.走法生成:

走法的生成會相對容易很多,因為吃子棋大多數情況下,每一步都要緊對方的氣,而少數情況只能長氣逃命,因此前中期合理走法很少,而遊戲很少發展至後期。

2.估值核心:

對於棋面的判斷也相對容易,不需要考慮地域與勢等抽象概念,這些抽象的概念連當下計算機科學家都沒有找到比較好的解決辦法。但這一部分要測試非常難,要微調很多引數,感知棋力變化。對於未發生提子的葉子結點,判斷形勢與輸贏。1.輪到我下,對方存在乙個一氣的棋竄,則我勝利。2.輪到我下,對方不存在乙個一氣的棋竄,而我有兩個一氣的棋竄,則我失敗。3.輪到我下,敵方不存在一氣的棋竄,若我沒有1氣的竄,對方可有兩氣棋竄,若有開始考慮,雙打吃與徵吃的可能。4.同三情況考慮自己,我方僅存在乙個一氣竄,則考慮是否被徵吃,以及雙打吃。5.都沒有出現,考慮一些其他的額外引數。

3.搜尋引擎:pvs,如果有效能需求考慮使用置換表。

我曾兼職圍棋入門班的助教,深知陪著4,5歲小孩子下圍棋是一件很頭大的事,因為他們下棋時經常會哭鼻子鬧脾氣刷淘氣。孩子們剛入門時下得是吃子棋,下課回家都是家長陪著下,同樣無論輸贏都是一件頭大的事,但是家長們都說孩子和電腦對戰不會哭鼻子鬧脾氣耍淘氣。

於是,我上網搜尋有沒有吃子棋對戰軟體,使家長脫離苦海,也使孩子能夠專心下棋而不是哭鼻子鬧脾氣耍淘氣,但未找到,可能是需求過少的緣故,一般孩子們下一周的吃子棋就可以下真正的圍棋了。

目前,本人正在用業餘時間,研發此遊戲。歡迎和廣大圍棋愛好者,吃子棋愛好者多多交流。

人機博弈 吃子棋遊戲(二)算氣

演算法步驟例如以下。輸入計算棋氣的起始子。檢查我方棋子其周邊的空白,並檢視此空白是否已經計算過氣了。假設沒有計算過氣加一,假設已經計算則略過。進而遞迴呼叫計算我方棋子上下左右子的氣,最後演算法會返回棋串的子數和氣數。演算法凝視十分詳盡。這個計算棋子氣的演算法,參考結合我們自身的應用須要優化和改動。這...

人機博弈之(一) 博弈介紹

1.人機博弈的要點 人機對弈的程式,至少應具備一下幾個部分 a 某種在機器上表示棋局的方法,讓程式知道博弈的狀態 b 產生合法的走法規則,是得博弈雙方公正,並可以判斷人類對手是否亂走 c 從所有合法的走法中選擇最佳的走法的技術 d 一種評估局面優劣的方法,同上面技術配合作出智慧型選擇 e 乙個實現遊...

ICG遊戲博弈一

nim遊戲是博弈論中最經典的模型 之一?它又有著十分簡單的規則和無比優美的結論,由這個遊戲開始了解博弈論恐怕是最合適不過了。nim遊戲是組合遊戲 combinatorial games 的一種,準確來說,屬於 impartial combinatorial games 以下簡稱icg 滿足以下條件的...