对于这个游戏,有一个10x10的棋盘和几个不同的奖品,价值从1到9,有一些简单的机器人玩,一个人总是追逐最接近的奖品,另一个总是最好的奖品分配给它的点数。机器人和奖品随机放在棋盘上。任务是创建另一个简单的AI,它总是收集最多的积分并赢得游戏。
如何在奖品积分和奖品距离之间进行选择,以便让新的AI始终赢得比赛?我以为我会更喜欢更接近的奖品,但是如果它比最接近的奖品大2,那么就会获得更大的奖金,但这并不总能获胜。
机器人不知道机器人在哪里,如果一个机器人为一个奖品移动8个空格,另一个机器人可以移动8个空间并在此期间收集多个奖品。所有的机器人一次移动,可以对角移动。一旦棋盘上没有更多奖品,游戏就会结束。
答案 0 :(得分:3)
没有办法保证胜利。如果机器人/奖品是随机放置的,肯定是随机放置会让你在其他机器人获得它们之前离奖品太远。
由于您了解其他机器人的确切行为,因此您可以对他们将为给定电路板进行的所有未来移动建模。然后,您可以将所有可能的移动作为树和棋盘状态进行枚举,然后查看叶子并找到能够获得获胜分数的叶子。换句话说,每个分支都是您所做的移动,节点代表电路板状态,包括其他机器人将进行的移动。此外,这不是二叉树,每个节点将根据您可以在该转弯处移动的方向进行分支。在进行单个实际移动之前,您将完全构建此树,因此,一旦您选择最佳路径,您将基本上预测游戏的结果。这是可能的,因为其他机器人以可预测的方式移动。
同样在移动时,您可以添加检查以确保其他机器人按预期移动,就像调试功能一样。根据系统的运行方式,他们可能会在决定移动之前看到您的移动,具体取决于每个人是同时移动还是一次移动。无论哪种方式都可以完成,你只需要确保你的移动方式是准确的。
请注意,可能有其他叶子,你得分较高,但因为其中一个机器人占据另一个机器人而失败。即(你:12,a:1,b:17)vs.(你:11,a:10,b:9)
可能成功最多的路径是那些利用其他机器人的行为的路径,例如,当它离你更近时抓住最高奖励,导致贪婪的机器人向它移动。如果你有足够的动作,也可以在途中获得奖品。但是,您不必编写此行为的代码,因为当您创建树并找到最佳移动序列时,您将隐式发生这种行为。