我想为以下游戏构建一个玩家:您有一个棋盘,其中位置1
是您的玩家,位置2
是对手玩家,-1
是一个被阻塞的单元格,一些正值是奖金。您可以向上、向下、向左或向右移动。此外,每个奖金都有一个计时器,直到它消失(步数)。此外,每一步都有超时限制。在游戏结束时,当至少有一名玩家被卡住时,我们会检查比分并宣布获胜者。
板示例:
-1 -1 0 0 0 -1 -1 -1
-1 0 -1 -1 -1 0 0 340
-1 -1 0 0 0 -1 0 0
-1 0 0 -1 1 -1 0 -1
-1 0 0 -1 -1 0 0 0
0 0 -1 -1 -1 0 2 -1
0 -1 0 0 -1 0 0 600
-1 -1 0 0 -1 -1 -1 -1
0 -1 0 0 0 0 -1 -1
我正在使用带有时间限制的 MiniMax 算法来玩游戏。如果我们有孩子,我们会回来为了玩家获胜,为了对手的胜利,和领带。如果我们到达特定深度,我们会计算启发式值。如果我们在 MiniMax 的某个地方超时,那么我们返回最后计算的方向。我正在尝试找出一个好的策略来赢得这场比赛,或者如果没有解决方案可能会打成平手。
你会定义什么启发式函数?
我的想法 - 四个因素:
- - 从当前位置的每个方向可能的步数。
- - 到中心的分析距离。
- - 在哪里是奖金的价值, 是如果我们能得到奖金,在它消失之前(否则) 和是奖金和玩家之间的距离。
- - 球员之间的距离。最终公式:
我不确定这对于那场比赛是否是一个好的策略。您将如何定义启发式函数?它也应该很快计算出来,因为游戏的每一步都有超时。
换句话说,什么会给我们最好的迹象表明我们的球员将赢/输/平?