作者murasakinki (mura)
看板GameDesign
標題[遊戲] 自製的Android五子棋
時間Wed Oct 23 13:42:16 2013
遊戲載點:
https://drive.google.com/folderview?id=0Bxh-7fIzdX14NFRNY2VfQ3I3SDQ
這是我所做的第一隻APP程式
只是單純的五子棋,同色五子連成一線就贏
有一些功能
選棋盤大小:9*9、13*13、19*19
對電腦:第一次寫電腦要判斷自己做事情的程式,搞了很久才搞定,有基本強度
讀取棋譜:每次新局、下子時讓紀錄存在SD卡裡的TXT檔,讀取時抓出來
在最新棋子標註紅點:感謝朋友提供的意見,原本跟電腦下時常不知道他下到哪
訊息顯示電腦下在哪裡
在線上標註是第幾條線,並讓它跟著滑動
放大縮小是靠著按鍵,不是用多點觸碰
悔棋:避免玩家點錯
第一次寫出可以拿得出來看的程式
希望大家可以給我一些建議或者意見,感謝
感覺離自己寫出自創遊戲還好遠...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.205.184.26
1F:→ KanoLoa:XD前陣子才討論AI很熱絡呢,要不分享下你的策略 10/23 15:14
我是分成直橫斜斜四個方向去存成字串,然後把黑白棋分開算
之後判斷是活二、死三、活三、連四,讓空格的地方加上分數
最後是讓他比較分數哪邊比較高去下,加上一些條件(活二以下不擋、活三必檔等等)
2F:推 LaPass:抓不下來 QAQ 10/23 15:41
4F:→ LaPass:可以用手機直接抓 10/23 15:44
5F:推 LaPass:電腦有時候會下在很奇怪的地方呢... 10/23 15:48
6F:推 LaPass:棋力不錯呢 10/23 15:56
7F:推 LaPass:這個電腦愛防守,不下四三跑去擋我的活三,防守的權重是不 10/23 16:02
8F:→ LaPass:不是調的很高? 10/23 16:02
如果已經連四卻不去檔的話,可能是我哪邊寫錯了
我是讓他活三以上會先去找哪邊有連四,之後找活三、死三
兩邊都沒活三以上會判斷分數高的去下
是有故意讓他比較重防守,有攻擊的機會應該也不會錯過
※ 編輯: murasakinki 來自: 123.205.184.26 (10/23 20:13)
10F:→ LaPass:跑去擋活三 10/23 21:32
11F:→ murasakinki:感謝告知,目前正在找原因... 10/23 21:50
12F:→ murasakinki:修正完畢 10/23 22:22
13F:推 LaPass:結果是哪裡出問題? (純好奇) 10/23 22:29
15F:→ murasakinki:單純我分數配的不當而已,讓變種活三分數太低了 XD 10/23 22:37
16F:→ murasakinki:結果好像還有問題,我在研究一下orz 10/23 22:39
17F:→ murasakinki:檢查了一下發現是打錯數字了,已改正... 真粗心 10/23 22:44
18F:推 LaPass:wwwwww 這種事正常啦.... 10/23 22:46
19F:推 LaPass:對了,可以請問ai的寫法是怎麼樣呢? 10/24 20:17
其實前面就講得差不多了
我是讓他每次下完棋會先判斷勝負,順便把棋子存成四個方向的字串陣列
輪到電腦時把字串陣列抓去用,開始判斷棋子的狀況
用兩個迴圈控制,第一個迴圈是第幾個字串,第二個迴圈是字串的第幾個字開頭
接著用一堆判斷式判斷分數
例如:取五個字,如果是NBBBN,就在兩個N上面加上分數
如果是NBBNN,就在三個N上面加上分數
連四、活三的分數有設得特別的高
避免被剛好有一個點有四個死三接著之類的狀況壓過分數
然後把分數存到座標上(兩種顏色、四種方向分開存)
最後就是把四個方向同座標的分數加起來,再去判斷哪些狀況可以直接下
例如連四、活三,或者可以形成雙活三以上等等
沒有的話,將電腦下的棋子加上分數,再比對兩種顏色哪個單點分數最高
如果該色單點最高分有多個點,判斷哪個點是另一色的最高分
又有多個點的話,再去隨機下其中一個點
自己覺得是用很暴力的方法去算,不知道有沒有更好的方法...
這種方法也沒辦法讓電腦判斷:
「下這裡活三對方檔,再下那裡活三對方檔,最後下這邊就可以形成死四活三了!」
這一類狀況,所以玩家故意這樣下,電腦就會一敗糊塗了
※ 編輯: murasakinki 來自: 123.205.184.26 (10/26 10:29)
20F:推 LaPass:唔..... 我也是用這種 10/26 13:22
21F:→ LaPass:有另外一套方式是min-max以及改良後的alpha-beta,你可以看 10/26 13:23
22F:→ LaPass:一下 10/26 13:23
23F:→ murasakinki:alpha-beta看不太懂,看來我的理解能力有待加強... 10/26 21:49