我正在寻找关于从哪里开始为第三场比赛创建一个计算机AI对手的指导/建议。这个问题多年来一直困扰着我(字面意思),因为我一直不能解决它。我已经耗尽了谷歌的精力来寻找这个答案。
具有计算机对手的示例match-3游戏包括:Puzzle Quest和Crystal Battle。
在创建这样的AI对手时使用了什么编程方法,我如何将其应用于Unity 2D脚本?我可以从哪里/如何开始?我主要是寻找一个教程或一些东西,让我开始在正确的方向。我知道这不是一件快速而容易的事情,但我想一步一步地尝试,这样我就能更好地理解事情。
提前感谢!
发布于 2013-06-24 00:22:26
这里有两个问题:
如果你的棋盘相当小,你可以简单地暴力破解他们两个。对于网格中的所有位置,检查是否可以向上、向下、向左或向右移动,并且您有自己的移动生成器。(您应该检查已经为游戏的单人版本实现的有效走法)。
选择最好的走法会有点棘手,因为你必须评估每一步走法。执行此操作的常用方法是MiniMax方法。一般的想法是,你在接下来的几个回合中建立一个所有可能的动作的树,并为每一片叶子分配一个分数。然后你减少树,这样如果轮到移动,父节点就变成max(叶子),如果玩家移动,就变成min(叶子)。你最终得到了你的移动在根上的分数。
像这样的基本AI编程的很好的资源是Chess Programming Wiki (你不需要90%的描述。从MiniMax和AlphaBeta算法开始)。
另一方面,对于最简单的人工智能,你可以随机选择一个动作,当你计划你的动作时,比赛3游戏并不是最苛刻的。
编辑:作为事后考虑,以下似乎是比赛3游戏的合理人工智能策略:
假设每次移动后添加的所有随机gem都不能以任何方式匹配:
https://stackoverflow.com/questions/17261847
复制相似问题