C语言中的MiniMax算法tic-tac-toe

时间:2015-09-18 18:55:34

标签: c artificial-intelligence minimax

试图了解电脑游戏玩家以熟悉AI。我理解minimax在理论上是如何工作的,但是无法理解我在网上找到的代码是如何工作的。 有人可以向我解释minimax结果/计算机移动功能(第38-78行)。 信用:https://gist.github.com/MatthewSteel/3158579

感谢

df2 <- data.frame(time=seq(min(df$time), max(df$time)), value=NA)
df2[df$time,"value"] <- df$value
acf(df2$value, lag.max=10, type="cor", plot=FALSE, na.action=na.pass)

# Autocorrelations of series ‘df2$value’, by lag
#
#     0      1      2      3      4      5      6      7      8      9     10 
# 1.000  0.716  0.665  0.415  0.166  0.194  0.046  0.007  0.029  0.008 -0.041 

1 个答案:

答案 0 :(得分:1)

以下是minimax

的精髓
int minimax(int board[9], int player) {
    // ....
    for(i = 0; i < 9; ++i) { //For all moves,
        // ....
        int thisScore = -minimax(board, player*-1);
    }
}

完成每个可能的移动,并且对于每个可能的移动,转动棋盘,假装是另一个玩家(那是player*-1部分),并尝试每个可能的移动。 thisScore被设置为递归调用minimax的负返回值,因为对其他玩家的好处等于对我们自己有害。

computerMove只需完成所有可能的移动,为每个可能的移动调用minimax,并使用效果最佳的移动。