我想做一个基于纸牌战斗的游戏。在这张牌中有特定的属性,可以增加玩家的生命/攻击/防御或攻击敌人以减少他的生命/攻击/防御
我正在试着为这个游戏做一个人工智能。AI必须根据当前的情况来预测它会选择哪张牌,比如AI的hp/攻击/防御和Enemy的hp/攻击/防御。由于人工智能看不到敌人的牌,因此它不能预测未来的行动。
我搜索了一些像minmax这样的人工智能技术,但我认为minmax不适合,因为人工智能无法预测任何未来的行动。
我正在寻找一种技术,这是非常灵活的,以便我可以添加大量的卡以后。
你能推荐一种这种游戏的技巧吗?谢谢
发布于 2013-05-14 01:26:29
这本身并不是ActionScript 3的主题,但我确实认为它相当有趣。
首先,我建议为任天堂DS或类似的游戏选择Yu-Gi-Yu的2009年星尘加速器世界锦标赛。
这个游戏有一个相当先进的计算机AI系统,它不仅处理预期的优势或劣势在生命值方面,而且卡的优势和组合。如果你正在接受这样的挑战,我强烈建议你做必要的研究(另外,当玩视频游戏是研究时,谁能抱怨呢?)
我对构建AI的建议如下:当计算机决定其移动时,创建一个移动对象数组。然后让它为它可以看到的每个可能的移动创建一个新的移动对象。
对于每个移动对象,计算对手的HP会减少多少,他们还有多少牌,有多少生物,等等。
让计算机决定什么是最重要的(更多的伤害,更多的牌优势),并让它玩这一步。
更复杂的人工智能也会提前考虑几个转弯,也许会“看到”其他人没有的动作。
发布于 2013-05-14 02:42:43
我建议你看看几个星期前我为了在闪存中好玩而构建的this game of Reversi。这有一个非常基本的人工智能实现,但基础可以应用于您的情况。
基本上,游戏的工作方式是在每次移动之后(玩家或CPU,所以我可以确定玩家是否进行了正确的移动与CPU进行的比较),我为每个可能的合法移动创建了一个Vector。然后我决定哪个移动提供最高的分数变化,并将其设置为最佳移动。然而,我也会检查一下移动是否会导致其他玩家获得角球(如果你从来没有玩过,抓住角球的玩家通常会赢)。如果是,我告诉CPU避免这种移动,并检查第二个最好的移动,依此类推。最终的结果是一个CPU可以真正地进行斗争。
请记住,这只是一个下午的工作(对于整个游戏,从糟糕的GUI到功能再到AI),所以这是非常基础的,我可以做一些事情,比如运行未来可能的移动以及检查序列。有趣的是,我的动作(显然是基于我的人工智能)是CPU在近80%的时间里做出的动作。唯一不正确的时候是当我像你一样下国际象棋的时候,你的走法仅仅是为了定位下一步棋的四个转弯。
对于你的游戏,你有一大堆的变量需要考虑,而不是像我一样只有一个点数。我建议列出每一件事,并对每件事应用一个点值,这样你就可以对每件事应用重要性值。我为一个缓存系统做了类似的事情,它会根据年龄、使用情况、大小等自动确定要保留的最重要的文件。然后,您可以查看CPU手中的每一张牌,计算每张牌的值,并使用该牌(当然,假设这样做是合法的)。
一旦你弄清楚了这一点,你就可以研究每一步在下一轮中可能做的事情(即每一步的“伤害”值)。一旦完成,你就可以给它添加一些功能,让CPU做出战略性的移动,允许它们使用更强大的卡片,或者执行“完成”移动,或者以它最终工作的方式。
再一次,保持它是一个简单的基于点的系统,并从那里继续前进。你需要一些可以进行物理比较的东西,所以坚持基于点的系统会让这一切变得简单。
我为这个答案的冗长道歉,但我希望它能在某种程度上有所帮助。
https://stackoverflow.com/questions/16527172
复制相似问题