五子棋演算法設計隨想

2021-03-31 08:56:30 字數 888 閱讀 9208

五子棋演算法設計隨想

五子棋是深受人們特別是年輕朋友喜歡的一種娛樂性很強的益智遊戲。本文講討論如何讓計算機實現具有一定智慧型的五子棋演算法。其中都是隨時所想的記錄。

一、如何將乙個空棋位兩端的棋勢累加起來

1、兩端只有一方的棋子

a.衝+衝型

顯然衝+衝還是衝。並且衝值累積。例如,衝1+衝2=衝3。但是,可以看到,當沖值和小於5時,兩者累加得到死棋。而衝值和大於等於4時此時為棋勢最大。因此,總結起來,對於只有一方的衝值相加,只有兩種情況,要麼為死棋(棋勢最小),要麼為極棋(棋勢最大)。

b.衝+活型

衝+活還是衝。衝值相加。例如,衝1+活2=衝3。

c.活+活型

活+活還是活,活值相加。例如,活1+活2=活3。

2、兩端有不同方的棋子

a.衝+衝型

這個問題也不複雜。因為雙方互相在此棋位制約,所以只有衝值不大於4,就是死棋,而衝值大於等於4時又為極棋。例如,敵衝1+我衝2=死棋,敵衝2+我衝3=死棋,敵衝4+我衝1=極棋。

b.衝+活型

這種情況也比較容易討論。其實,認真觀察會發現,雙方棋子也在互相制約。

只要衝方不是衝4,此時此位的棋勢即取活方棋勢,因為無論如何衝方也不可能在此棋位勝利。而,衝方是衝四是就取衝方棋勢。例如,敵衝2+我活1=我活1,敵衝4+我活1=敵衝4,敵活1+我衝2=敵活1,敵活2+我衝3=敵活2,敵活3+我衝4=我衝4。

c.活+活型

仍未活型。比較兩者棋勢,大者的棋勢即為該棋位的棋勢。例如,敵活1+我活2=我活2,敵活4+我活1=敵活4。

二、關於不同棋型棋勢的設計

1、應當讓衝4、活4等棋型擁有最高棋勢。

下五子棋的bot 五子棋演算法

include include include include include include jsoncpp json.h c 編譯時預設包含此庫 define n 7 每個節點的分支數 以下為各棋型的識別碼 權重 define win 1 4000 define lose 2 4000 defi...

五子棋(vb演算法)

for i 1 to 11 for j 1 to 11 if map i,j a and map i 1,j 1 a and map i 2,j 2 a and map i 3,j 3 a and map i 4,j 4 a then gameover a exit function next j ...

五子棋演算法3

這裡設計和實現了乙個人機對下的五子棋程式,採用了博弈樹的方法,應用了剪枝和最大最小樹原理進行搜尋發現最好的下子位置。介紹五子棋程式的資料結構 評分規則 勝負判斷方法和搜尋演算法過程。一 相關的資料結構 關於盤面情況的表示,以鍊錶形式表示當前盤面的情況,目的是可以允許使用者進行悔棋 回退等操作。cli...