[遊戲] 自製的Android五子棋

看板GameDesign作者 (mura)時間12年前 (2013/10/23 13:42), 編輯推噓10(10013)
留言23則, 3人參與, 最新討論串1/1
遊戲載點:https://drive.google.com/folderview?id=0Bxh-7fIzdX14NFRNY2VfQ3I3SDQ 這是我所做的第一隻APP程式 只是單純的五子棋,同色五子連成一線就贏 有一些功能 選棋盤大小:9*9、13*13、19*19 對電腦:第一次寫電腦要判斷自己做事情的程式,搞了很久才搞定,有基本強度 讀取棋譜:每次新局、下子時讓紀錄存在SD卡裡的TXT檔,讀取時抓出來 在最新棋子標註紅點:感謝朋友提供的意見,原本跟電腦下時常不知道他下到哪 訊息顯示電腦下在哪裡 在線上標註是第幾條線,並讓它跟著滑動 放大縮小是靠著按鍵,不是用多點觸碰 悔棋:避免玩家點錯 第一次寫出可以拿得出來看的程式 希望大家可以給我一些建議或者意見,感謝 感覺離自己寫出自創遊戲還好遠... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.205.184.26

10/23 15:14, , 1F
XD前陣子才討論AI很熱絡呢,要不分享下你的策略
10/23 15:14, 1F
我是分成直橫斜斜四個方向去存成字串,然後把黑白棋分開算 之後判斷是活二、死三、活三、連四,讓空格的地方加上分數 最後是讓他比較分數哪邊比較高去下,加上一些條件(活二以下不擋、活三必檔等等)

10/23 15:41, , 2F
抓不下來 QAQ
10/23 15:41, 2F

10/23 15:44, , 3F
http://f23.tw/FFFz/v 弄下來了.... 這個網址裡有QRCODE
10/23 15:44, 3F

10/23 15:44, , 4F
可以用手機直接抓
10/23 15:44, 4F

10/23 15:48, , 5F
電腦有時候會下在很奇怪的地方呢...
10/23 15:48, 5F

10/23 15:56, , 6F
棋力不錯呢
10/23 15:56, 6F

10/23 16:02, , 7F
這個電腦愛防守,不下四三跑去擋我的活三,防守的權重是不
10/23 16:02, 7F

10/23 16:02, , 8F
不是調的很高?
10/23 16:02, 8F
如果已經連四卻不去檔的話,可能是我哪邊寫錯了 我是讓他活三以上會先去找哪邊有連四,之後找活三、死三 兩邊都沒活三以上會判斷分數高的去下 是有故意讓他比較重防守,有攻擊的機會應該也不會錯過 ※ 編輯: murasakinki 來自: 123.205.184.26 (10/23 20:13)

10/23 21:31, , 9F
應該下紅色那邊,可是ai卻
10/23 21:31, 9F

10/23 21:32, , 10F
跑去擋活三
10/23 21:32, 10F

10/23 21:50, , 11F
感謝告知,目前正在找原因...
10/23 21:50, 11F

10/23 22:22, , 12F
修正完畢
10/23 22:22, 12F

10/23 22:29, , 13F
結果是哪裡出問題? (純好奇)
10/23 22:29, 13F

10/23 22:35, , 14F
10/23 22:35, 14F

10/23 22:37, , 15F
單純我分數配的不當而已,讓變種活三分數太低了 XD
10/23 22:37, 15F

10/23 22:39, , 16F
結果好像還有問題,我在研究一下orz
10/23 22:39, 16F

10/23 22:44, , 17F
檢查了一下發現是打錯數字了,已改正... 真粗心
10/23 22:44, 17F

10/23 22:46, , 18F
wwwwww 這種事正常啦....
10/23 22:46, 18F

10/24 20:17, , 19F
對了,可以請問ai的寫法是怎麼樣呢?
10/24 20:17, 19F
其實前面就講得差不多了 我是讓他每次下完棋會先判斷勝負,順便把棋子存成四個方向的字串陣列 輪到電腦時把字串陣列抓去用,開始判斷棋子的狀況 用兩個迴圈控制,第一個迴圈是第幾個字串,第二個迴圈是字串的第幾個字開頭 接著用一堆判斷式判斷分數 例如:取五個字,如果是NBBBN,就在兩個N上面加上分數 如果是NBBNN,就在三個N上面加上分數 連四、活三的分數有設得特別的高 避免被剛好有一個點有四個死三接著之類的狀況壓過分數 然後把分數存到座標上(兩種顏色、四種方向分開存) 最後就是把四個方向同座標的分數加起來,再去判斷哪些狀況可以直接下 例如連四、活三,或者可以形成雙活三以上等等 沒有的話,將電腦下的棋子加上分數,再比對兩種顏色哪個單點分數最高 如果該色單點最高分有多個點,判斷哪個點是另一色的最高分 又有多個點的話,再去隨機下其中一個點 自己覺得是用很暴力的方法去算,不知道有沒有更好的方法... 這種方法也沒辦法讓電腦判斷: 「下這裡活三對方檔,再下那裡活三對方檔,最後下這邊就可以形成死四活三了!」 這一類狀況,所以玩家故意這樣下,電腦就會一敗糊塗了 ※ 編輯: murasakinki 來自: 123.205.184.26 (10/26 10:29)

10/26 13:22, , 20F
唔..... 我也是用這種
10/26 13:22, 20F

10/26 13:23, , 21F
有另外一套方式是min-max以及改良後的alpha-beta,你可以看
10/26 13:23, 21F

10/26 13:23, , 22F
一下
10/26 13:23, 22F

10/26 21:49, , 23F
alpha-beta看不太懂,看來我的理解能力有待加強...
10/26 21:49, 23F
文章代碼(AID): #1IPs6xRi (GameDesign)