3

我正在寻找关于从哪里开始为三消游戏创建计算机 AI 对手的指导/建议。这个问题多年来一直困扰着我(字面意思),因为我一直无法弄清楚。我已经用尽谷歌来寻找这个答案。

有电脑对手的三消游戏示例包括:Puzzle QuestCrystal Battle

在创建这样的 AI 对手时使用了哪些编程方法,我如何将其应用于 Unity 2D 脚本?我可以从哪里/如何开始?我主要是在寻找教程或其他东西来帮助我朝着正确的方向开始。我意识到这不是一件容易的事,但我想一步一步地尝试,这样我就能更好地理解事情。

提前致谢!

4

1 回答 1

1

这里有两个问题:

  • 产生可能的动作
  • 选择最佳移动

如果您的电路板相当小,您可以简单地暴力破解它们。对于网格中的所有位置,检查您是否可以将其向上、向下、向左或向右移动,并且您拥有移动生成器。(您应该检查已经为单人游戏版本实施的有效动作)。

选择最好的棋步会有点棘手,因为你必须评估每一步棋。执行此操作的常用方法是MiniMax方法。一般的想法是,您在接下来的几轮中构建一个包含所有可能移动的树,并为每个叶子分配一个分数。然后你减少树,这样如果 AI 轮到移动,父节点变为 max(leaves),如果玩家移动,则变为 min(leaves)。你最终得到了你在根部移动的分数。

像这样的基本 AI 编程的重要资源是Chess Programming Wiki(你不需要那里描述的 90%。从 MiniMax 和 AlphaBeta 算法开始)。

另一方面,对于最简单的人工智能,你可以随机选择一个动作,三消游戏在规划你的动作时并不是最苛刻的。

编辑:事后考虑,以下似乎是三消游戏的合理 AI 策略:

假设每次移动后添加的所有随机宝石都无法以任何方式匹配:

  1. 选择一个让我的对手无法移动的动作(没有子节点)。
  2. 如果 1. 不可能,无论我的对手选择哪一步(没有子节点是叶子),选择任何能保证我再次移动的移动。
  3. 如果 2. 不可能,请选择随机移动。
于 2013-06-23T16:22:25.587 回答