首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unity 2D/3D -为match-3游戏制作计算机对手(AI)

Unity 2D/3D -为match-3游戏制作计算机对手(AI)
EN

Stack Overflow用户
提问于 2013-06-23 22:40:09
回答 1查看 2.8K关注 0票数 3

我正在寻找关于从哪里开始为第三场比赛创建一个计算机AI对手的指导/建议。这个问题多年来一直困扰着我(字面意思),因为我一直不能解决它。我已经耗尽了谷歌的精力来寻找这个答案。

具有计算机对手的示例match-3游戏包括:Puzzle QuestCrystal Battle

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

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-24 00:22:26

这里有两个问题:

  • Generating possible moves
  • Choosing the best move

如果你的棋盘相当小,你可以简单地暴力破解他们两个。对于网格中的所有位置,检查是否可以向上、向下、向左或向右移动,并且您有自己的移动生成器。(您应该检查已经为游戏的单人版本实现的有效走法)。

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

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

另一方面,对于最简单的人工智能,你可以随机选择一个动作,当你计划你的动作时,比赛3游戏并不是最苛刻的。

编辑:作为事后考虑,以下似乎是比赛3游戏的合理人工智能策略:

假设每次移动后添加的所有随机gem都不能以任何方式匹配:

  1. 选择一个使我的对手无法移动的移动(没有子节点)。
  2. 如果1.不可能,请选择任何保证我另一个移动的移动,无论我的对手选择哪个移动(没有子节点是叶子)。
  3. 如果2.不可能,则选择随机移动。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17261847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档