1

我想制作基于游戏卡片战斗的游戏。在这个卡有哪些可以增加玩家的HP /攻击/防御或攻击敌人,以减少他的HP /攻击/防御基于卡片战斗的人工智能游戏

我试图让一个AI为这场比赛的具体属性。 AI必须根据AI的hp /攻击/防御和敌人的hp /攻击/防御等现状来预测它将选择哪张牌。由于AI无法看到敌方的牌,因此无法预测未来的举动。

我搜索像极小极大AI的一些技巧,但我认为极大极小将不适合,因为AI不能预测未来的任何举动。

我正在寻找一种非常灵活的技术,以便以后可以添加各种各样的卡片。

请问您可以为这样的游戏提供一种技巧。 感谢

回答

1

这本身并不是一个ActionScript 3的话题,但我不认为这是相当有趣的。

首先我建议拿起游戏王哦的星尘加速器世界锦标赛2009年任天堂DS或类似游戏。

游戏中有一个相当先进的电脑AI系统,不仅可以与预期的优势或劣势在较高的命中率方面,而且卡的优势和组合交易。如果你正在考虑在这样一个挑战,我绝对建议你做必要的研究(加,玩视频游戏时是研究,谁可以投诉?)

我为建设AI是如下建议: 作为计算机决定它的移动,创建一个Move对象数组。然后让它为每个可能看到的Move创建一个新的Move对象。

对于每一个移动对象,计算出对手差多少HP有,他们有多少卡仍会有,有多少动物等。

让计算机决定什么是最重要的(更多的伤害,更多的卡优势)并让它发挥这一举措。

更复杂的AI也会预先考虑好几个回合,也许“看到”其他人不会这样做。

+0

感谢您的答复。我也想过以这种方式使用它。 1)对于手中的所有牌,如果它们可用,则对其敌人的能力进行测试并记录利润点。 2)选择一个利润最高的卡片。 但问题是,像恢复200马力的情况比用300 HP攻击敌方更有价值。 AI会选择300HP卡,因为它给了它最大的利润。 – Shantanu 2013-05-14 07:26:59

+0

您需要将所有形式的利润(获得生命,造成伤害,卡的优势)转换为一项措施,例如AdvantagePoint。然后你可以决定各种利润转化为的比率,例如1点伤害值= 1点AP,1点生命值= 0.6点AP,1张卡片= 4AP。然后你可以根据什么是最多的AP来决定。对此的另一个好处是你可以改变不同人工智能的权重,为用户创造独特的体验。 – 2013-05-14 17:35:28

+0

是的,我也曾这么想过。我想我已经做了一个算法。我会试一试。感谢您的回复 – Shantanu 2013-05-15 05:35:17

1

我建议你看看this game of Reversi我在Flash里为了好玩而建了几个星期。这有一个非常基本的AI实现,但基本可以适用于您的情况。基本上,游戏的作用方式是在每次移动之后(玩家或CPU,因此我可以确定玩家是否做出了与CPU相比的正确移动),我创建了每个可能的法律的向量移动。然后我决定哪一招能够提供最高的分数变化,并将其设置为最佳分数。不过,我还要检查一下这个移动是否会导致其他玩家进入一个角落(如果你从未玩过,那么抓住角落的玩家一般会获胜)。如果是这样,我告诉CPU避免这种移动并检查第二好的移动等等。最终的结果是一个可以真正打起来的CPU。请记住,这只是工作的一个下午(对于整个游戏,从蹩脚的GUI到功能到AI),所以它非常基本,我可以做一些事情,比如通过检查序列。但有趣的是,我的动作(我明显是基于AI)是CPU将近80%的时间。唯一不合时宜的是当我像国际象棋这样玩游戏的时候,你的举动仅仅是为了移动位置而向下移动四圈

对于你的游戏,你有很多变数需要考虑而不是像我那样的单一点量表。我会建议列出每件事情,并对每件事物应用一个点值,以便您可以将重要性值应用于每件事物。我做了一个缓存系统类似,可自动决定什么是基于年龄,使用情况,大小等等,那么你看看CPU的手中的每个卡保持的最重要的文件,计算出每张牌的价值是什么,该牌(当然,假设这样做是合法的)。

一旦你明白这一点,你可以看看东西像什么每个举动可能会在下一回合(每招即“损害”的值)做的。一旦完成,您可以添加功能,让CPU进行策略性的移动,使他们能够使用功能更强大的卡或执行“完成”移动,或者最终工作。

此外,虽然,它保持到一个简单的基于点制度,不断从那里。你需要一些你可以进行物理比较的东西,所以坚持一个基于点的系统可以简化。

我对这个答案的长度道歉,但我希望这有助于以某种方式。

+0

感谢您的回复。在你和itcouldevenbeaboat建议的帮助下,我制定了一个算法来解决这个问题。顺便说一句,你的reversi游戏有非常好的AI :) – Shantanu 2013-05-15 05:37:49

+0

很高兴我可以帮忙。 – 2013-05-15 12:28:51