【发布时间】:2013-09-25 10:41:33
【问题描述】:
我们正在用 c++(使用 HTML/CSS/JS 前端)创建一个类似 Rummmikub 的游戏。除了人类玩家做出移动之外,我们还想创建一个移动算法。 有人可以推荐一个好的起点,或者已经存在的算法吗?
【问题讨论】:
标签: c++ algorithm artificial-intelligence
我们正在用 c++(使用 HTML/CSS/JS 前端)创建一个类似 Rummmikub 的游戏。除了人类玩家做出移动之外,我们还想创建一个移动算法。 有人可以推荐一个好的起点,或者已经存在的算法吗?
【问题讨论】:
标签: c++ algorithm artificial-intelligence
一般来说,我会说 - 在每个步骤中,检查与完整“手”的可能最小距离(这不是微不足道的),并尝试根据它们在可能的解决方案中的用途为不同的部分打分。你的最终目标是决定扔哪块石头,这样可以最大限度地减少无法完成任何可能的结束场景的风险(如果你能干扰对手,可能会有奖励,但我想以后再说吧)
【讨论】:
对于像这样的回合制游戏,经常使用一个 minimax (https://en.wikipedia.org/wiki/Minimax)。要在超过 2 个玩家的情况下启用此算法,您可以让每个节点成为值的向量,而不是单个值。这可能会导致大量计算,您可以通过在极小极大树上应用 alpha-beta 剪枝 (https://en.wikipedia.org/wiki/Alpha_beta_pruning) 来补救。
顺便说一句:在使用 AI 开发游戏时,请记住,您的代理应该很有趣才能赢得胜利。制作太难的 AI 代理(通常)很容易。
【讨论】: