iT邦幫忙

0

Minimax演算法code請教

mave 2019-09-27 13:05:552533 瀏覽

各位大大好

小弟目前在研究minimax演算法,於githube有找到一則以python編寫的code,
網址:
https://github.com/Cledersonbc/tic-tac-toe-minimax/blob/master/py_version/minimax.py

但是小弟才學粗淺,對於code有三個地方不懂,來版上請求大大們協助:

  1. 為何人類玩家的移動步驟會有-1? 不應該都是大於0嗎?
  2. 為何要設定條件 move<1 or move>9? 井字遊戲最大步驟不是9而已嗎?
  3. 類似於第1個問題,為何minimax函數的row & column會有-1 的步數?
    https://ithelp.ithome.com.tw/upload/images/20190927/20106440dyXNoDgXzC.jpg

https://ithelp.ithome.com.tw/upload/images/20190927/20106440f3EM6CPy8T.jpg

ccutmis iT邦高手 2 級 ‧ 2019-09-27 13:48:44 檢舉
A1:
move=-1,那個是常見的初始值設定 ,就如同你的疑問一樣,move值合理範圍不是1~9嗎,所以move==-1表示這局還沒開始的狀態。

A2:
因為move是讓玩家輸入一個數字,但玩家有可能故意來亂的輸入不為1-9的數字,如9999,-87之類的,那個while(move<1 or move>9) 就是當玩家來亂的時候讓他重新輸入正確的。

A3:這個從你貼沒有前後文猜不出來(不知道infinity怎麼來的),麻倉葉最近罷工...我也是 可能沒時間看^^"
小魚 iT邦大師 1 級 ‧ 2019-09-27 13:50:53 檢舉
我可能沒時間看,
不過我建議你先一行一行看懂,
不要先發問.
谷哥 iT邦新手 3 級 ‧ 2019-09-27 13:59:31 檢舉
先回答 2,因為人類玩家有可能亂輸入,防止亂輸入,如果輸入一個不是在 1 到 9 的數字就要讓人類玩家重新輸入,那要怎麼讓人類玩家重新輸入呢?

接續回答1,那就是把 move 設成 -1,作爲一個依據來判斷是否要讓人類玩家輸入數字,因此一開始就先設成 -1,那就一定會先進入讓人類玩家輸入數字的步驟。

回答 3,簡單來說也只是作為一個初始值。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答