→ KanoLoa:XD前陣子才討論AI很熱絡呢,要不分享下你的策略 10/23 15:14
我是分成直橫斜斜四個方向去存成字串,然後把黑白棋分開算
之後判斷是活二、死三、活三、連四,讓空格的地方加上分數
最後是讓他比較分數哪邊比較高去下,加上一些條件(活二以下不擋、活三必檔等等)
推 LaPass:抓不下來 QAQ 10/23 15:41
→ LaPass:可以用手機直接抓 10/23 15:44
推 LaPass:電腦有時候會下在很奇怪的地方呢... 10/23 15:48
推 LaPass:棋力不錯呢 10/23 15:56
推 LaPass:這個電腦愛防守,不下四三跑去擋我的活三,防守的權重是不 10/23 16:02
→ LaPass:不是調的很高? 10/23 16:02
如果已經連四卻不去檔的話,可能是我哪邊寫錯了
我是讓他活三以上會先去找哪邊有連四,之後找活三、死三
兩邊都沒活三以上會判斷分數高的去下
是有故意讓他比較重防守,有攻擊的機會應該也不會錯過
※ 編輯: murasakinki 來自: 123.205.184.26 (10/23 20:13)
→ LaPass:跑去擋活三 10/23 21:32
→ murasakinki:感謝告知,目前正在找原因... 10/23 21:50
→ murasakinki:修正完畢 10/23 22:22
推 LaPass:結果是哪裡出問題? (純好奇) 10/23 22:29
→ murasakinki:單純我分數配的不當而已,讓變種活三分數太低了 XD 10/23 22:37
→ murasakinki:結果好像還有問題,我在研究一下orz 10/23 22:39
→ murasakinki:檢查了一下發現是打錯數字了,已改正... 真粗心 10/23 22:44
推 LaPass:wwwwww 這種事正常啦.... 10/23 22:46
推 LaPass:對了,可以請問ai的寫法是怎麼樣呢? 10/24 20:17
其實前面就講得差不多了
我是讓他每次下完棋會先判斷勝負,順便把棋子存成四個方向的字串陣列
輪到電腦時把字串陣列抓去用,開始判斷棋子的狀況
用兩個迴圈控制,第一個迴圈是第幾個字串,第二個迴圈是字串的第幾個字開頭
接著用一堆判斷式判斷分數
例如:取五個字,如果是NBBBN,就在兩個N上面加上分數
如果是NBBNN,就在三個N上面加上分數
連四、活三的分數有設得特別的高
避免被剛好有一個點有四個死三接著之類的狀況壓過分數
然後把分數存到座標上(兩種顏色、四種方向分開存)
最後就是把四個方向同座標的分數加起來,再去判斷哪些狀況可以直接下
例如連四、活三,或者可以形成雙活三以上等等
沒有的話,將電腦下的棋子加上分數,再比對兩種顏色哪個單點分數最高
如果該色單點最高分有多個點,判斷哪個點是另一色的最高分
又有多個點的話,再去隨機下其中一個點
自己覺得是用很暴力的方法去算,不知道有沒有更好的方法...
這種方法也沒辦法讓電腦判斷:
「下這裡活三對方檔,再下那裡活三對方檔,最後下這邊就可以形成死四活三了!」
這一類狀況,所以玩家故意這樣下,電腦就會一敗糊塗了
※ 編輯: murasakinki 來自: 123.205.184.26 (10/26 10:29)
推 LaPass:唔..... 我也是用這種 10/26 13:22
→ LaPass:有另外一套方式是min-max以及改良後的alpha-beta,你可以看 10/26 13:23
→ LaPass:一下 10/26 13:23
→ murasakinki:alpha-beta看不太懂,看來我的理解能力有待加強... 10/26 21:49