[程式] 圈圈金字塔的AI邏輯

看板GameDesign (遊戲設計)作者 (ETREX)時間18年前 (2006/10/16 03:19), 編輯推噓5(502)
留言7則, 4人參與, 最新討論串1/5 (看更多)
http://www.wretch.cc/blog/et284vu065k3&article_id=4747153 ==以下直接貼上網誌內容== AI如果要能夠學習,就必須先能儲存遊戲過程 這個遊戲過程要怎麼存呢? 我採用以下的資料結構 圖解    1    23   456   789A  BCDEF 我用二進位來表示 *FED CBA9 8765 4321 這是每個二進位所代表的意義 0000 0000 0000 0000 就是全部都沒畫 0111 1111 1111 1111 就是全部都畫掉 這個二進位轉成整數介於0 - 32767 之間 而且可以使用 AND (&) 判斷某條線是否可以畫 例如原先的圖是(1246被畫) 玩家畫掉DEF 0000 0000 0010 1011  0111 0000 0000 0000 那麼這兩個值 AND 的結果會是0 既然整數會在0 ~ 32767 之間 就表示這遊戲總共有 32768 種情況 (不考慮旋轉和翻轉) 設計時我比較想做成存 32768 種情況的勝率【勝場數 / 勝場數 + 敗場數】 但是要存勝場和敗場兩個值,或是存一個浮點,比較麻煩 於是我的AI存的是這 32768 種情況的【勝場數-敗場數】 原先想用【勝場數-敗場數】 不設上下限,但是怕溢位所以還是設一下 後來發現上下限的值越小,AI的反應就會越快 因為數字從最大到最小所需要的場次變少 所以我讓AI存的值介於 1 到 -1 之間 選擇邏輯是數字大的先隨機選 所以如果你跟AI玩,只要AI輸了 同一種輸法就不太可能出現第二次 大致上是這個樣子... 目前想改的部分是AI玩一場之後,會影響到所有翻轉、旋轉圖形的勝負值 有想過將AI存到資料庫,並且讓玩家連線到網路上的AI 如此一來智障AI就不需要跟智障AI練習了 讓所有玩家一起訓練AI 還不賴 0.0 (可是我不會寫網路程式,我也不會資料庫 >.< ) -- 無名網誌:http://www.wretch.cc/blog/et284vu065k3 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.228.78.254

10/16 19:17, , 1F
這個game的state數滿少的,試試用minimax演算法吧
10/16 19:17, 1F

10/17 01:50, , 2F
那是什麼 0.0
10/17 01:50, 2F

10/17 04:56, , 3F

10/17 04:57, , 4F
其實就是一種樹的窮舉搜尋法, 配合alpha-beta切割法, 可以降
10/17 04:57, 4F

10/17 04:58, , 5F
低搜尋的節點數, 減少搜尋時間。
10/17 04:58, 5F

10/17 23:14, , 6F
我沒有用樹結構0.0
10/17 23:14, 6F

10/18 11:13, , 7F
我想P大並沒有要你用樹結構的意思在....?
10/18 11:13, 7F
文章代碼(AID): #15CecxRM (GameDesign)
文章代碼(AID): #15CecxRM (GameDesign)