?? help.txt
字號:
歡迎使用小文版五子棋
網絡對戰部分需在不同的機器上方可使用。
不過可以在本地模擬里感受其功能
操作部分簡單即不羅嗦了。嘿嘿
下面說說AI的思想
初級思想(網上搜索得):
一,先求五子棋的獲勝組合
在一場五子棋的游戲中,計算機必須要知道有那些的獲勝組合,因此我們必須求得
獲勝組合的總數。我們假定當前的棋盤為10*10。
(1),計算水平方向的獲勝組合數,每一列的獲勝組合是:6,共10列,所以水平方向的獲勝組合數為:6*10=60
(2),計算垂直方向的獲勝組合總數,每一行的獲勝組合是:6,共10行,則垂直方向的獲勝組合數為:6*10=60
(3),計算正對角線方向的獲勝組合總數,正對角線上的獲勝組合總數為6+(5+4+3+2+1)*2=36
(4),計算反對角線方向的獲勝組合總數,反對角線上的獲勝組合總數為6+(5+4+3+2+1)*2=36
這樣所有的獲勝組合數為:60+60+36+36=192
二,建立和使用獲勝表
我們已經計算出了一個10*10的五子棋盤會有192種獲勝方式,這樣我們可以利用數組建立獲勝表,獲勝表的主要作用是:1,判斷當前的獲勝方式是否有效;2,判斷當前的獲勝方式中到底有多少子落入該獲勝組合中。詳細的使用您將在后面的程序中可以看出。
三,分數的設定
在游戲中為了讓計算機能夠決定下一步最佳的走法,必須先計算出計算機下到棋盤
上任一空格的分數,而其中最高分數便是計算機下一步的最佳走法。
原理:我們判定當前討論的空格與當前討論的點有幾種獲勝的方式,有幾種該空格就加幾分。這種原理初聽起來似乎是無法入手,沒關系,當您了解我們后面的程序后您就會明白這種決策原理了。
這種決策有一些缺陷,因為如果只根據這個模型設計,就有可能出現電腦或玩家有三個子連成一線的時候,計算機卻判斷不出,它認為其他某些空格是當前的獲勝的最佳位置而不去攻擊或防守。沒關系我們完全可以通過一個加強算法來改變當前的分值情況,也就是說當電腦或玩家有三個子或四個子連成一線時,我們通過加強算法將當前與三個子或四個子有關的空格的分值提高,從而可以彌補這一缺憾。
四,攻擊與防守
以上的方式,事實上計算機只是計算出了最佳的攻擊位置,為了防守我們還應計算當前玩家的最佳的攻擊位置。這樣有什么用呢?道理很簡單,如果玩家最佳攻擊位置的分數大于計算機最佳攻擊位置上的分數,那么計算機就將下一步的棋子擺在玩家的最佳攻擊位上以阻止玩家的進攻,否則計算機便將棋子下在自己的最佳攻擊位置上進行攻擊。
中等思想:
改進初級的攻防失調缺陷,并增加了必勝判斷以防止對方已經三子電腦(因攻分>防分,比如電腦剛好下了子后能造成2個三行,分會很高)還選擇進攻。
高級思想:
在前面的基礎上細化了每一種組合的記分模式,每次記錄分數的時候把兩端的子也包含進來了,七子檢查,看兩端是否阻塞分別計算分數。
作者: 李文耀(lovebit),7月19
PS:歡迎來信交流指點AI技術,個人郵箱yjandlwy@163.com
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -