Re: [程式] 圈圈金字塔的AI邏輯
文章有錯請指教....我只是小咖xD
Minimax這裡有中文說明,加上範例圖可以加速理解
http://0rz.tw/a620L
小弟以前也寫過一個小遊戲,就是用這個方式降低電腦的思考時間
當然這個AI沒有像e大那麼強還可以自我進化,
遊戲可以在此下載:
http://download.yousendit.com/50A1C11C4DDE961E (已修改成static lib)
開啟後選Game->Single就開始了
裡面的某些功能選項都是幻覺,請當作不存在
我想棋類遊戲應該都是這樣寫的吧?
場上棋子分佈的狀況都可以用某些規則去計算出一個數值,
如果某一種狀況對我們有利的話,這個分數應該要比較高,
這樣就知道哪一步比較好了
我們在下棋子的時候,會想辦法下出對我們最有利的情況
而當輪到對方的時候如果沒意外,對方會下對他最有利的一步
由分數觀點來講就是,讓算出來的分數最低
假如我想預測N步以後的情形 (我->對手->我->對手....)
我應該要計算雙方所下的所有可能組合,然後找出最大分數那一組
這樣我就知道我這一步該怎麼下了
而利用對方會朝對他最有利的方向前進的這個假設
則可以不用把每一種組合的分數都算出來,可以少算一些這樣
至於每一步的分數如何決定,通常跟對這個遊戲的認知度有一點點關連
像在我這個白癡AI中,我將邊角的分數拉得很高
因為我覺得有沒有搶到邊角非常重要
其他的邊緣地帶分數也有高一些些,至於像B2之類的地方
因為你搶到之後很可能之後會讓對手搶到邊角,所以分數是負的,代表不要下這一步
另外一個想法就是讓對手可以下的位置越來越少,
這樣對手下無可下,最後就會下在他最不希望下的位置
對手的選擇越少,代表他的靈活性越低
除了可以逼迫他下不該下的位置外,還有節省電腦計算量的妙用
結合類似這樣的觀念就可以決定一個狀況的分數了
當然有些觀念是上網查的....
當初會寫這個只是因為被VMJ小遊戲的電腦狠狠羞辱了一番
所以寫來看能不能報仇雪恥....
不過當我寫完之後所得到的只是又一次的羞辱....我的AI不爭氣的輸了
總之e大可以考慮加入這些元素看看,希望對你的AI能有些幫助
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.118.175.23
→
10/18 13:40, , 1F
10/18 13:40, 1F
推
10/18 21:19, , 2F
10/18 21:19, 2F
→
10/18 22:09, , 3F
10/18 22:09, 3F
推
10/18 22:53, , 4F
10/18 22:53, 4F
→
10/18 22:54, , 5F
10/18 22:54, 5F
推
10/18 22:59, , 6F
10/18 22:59, 6F
→
10/18 23:00, , 7F
10/18 23:00, 7F
※ 編輯: chowleft 來自: 140.118.175.23 (10/18 23:14)
→
10/19 01:56, , 8F
10/19 01:56, 8F
推
10/21 01:24, , 9F
10/21 01:24, 9F
討論串 (同標題文章)
GameDesign 近期熱門文章
PTT遊戲區 即時熱門文章