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

具有计算机对手的示例三消游戏包括:Puzzle QuestCrystal Battle

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

提前致谢!

最佳答案

这里有两个问题:

  • 生成可能的动作
  • 选择最好的动作

  • 如果您的董事会规模很小,则可以简单地将它们都强行使用。对于网格中的所有位置,请检查是否可以向上,向下,向左或向右移动网格,并具有移动生成器。 (您应该检查单人游戏版本已经实施的有效动作)。

    选择最佳动作将有些棘手,因为您必须评估每个动作。常见的方法是MiniMax方法。总体思路是,您将在接下来的两轮中构建所有可能动作的树,并为每个叶子分配得分。然后,减小树的大小,以便如果AI转向移动,则父节点变为max(leaves),如果玩家移动,则变为min(leaves)。最终,您获得了扎根的分数。

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

    另一方面,对于最简单的AI,您可以随机选择一个动作,而在计划动作时,三消游戏并不是最苛刻的要求。

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

    假设每次移动后添加的所有随机 gem 都无法以任何方式匹配:
  • 选择一个动作使我的对手无法移动(没有子节点)。
  • 如果1.不可能,则选择任何可以保证我采取另一种行动的举动,无论我的对手选择哪种举动(没有子节点是叶子)。
  • 如果无法2.,则随机选择。
  • 关于artificial-intelligence - Unity 2D/3D-让计算机对手(AI)参加第3场比赛,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17261847/

    10-12 12:48
    查看更多