AI算法设计:纸牌游戏

时间:2011-05-16 17:21:00

标签: java algorithm artificial-intelligence playing-cards

目前我正在制作名为Briscas或Briscola的西班牙纸牌游戏,http://en.wikipedia.org/wiki/Briscola

简而言之,这是一个纸牌游戏,其中两队2名队员相互比赛(他们看不到对方的手牌,甚至不是队员),只有在开始牌时洗牌,然后交出三张牌每个球员。顺时针方向,每个人都会抛出一张牌以试图赢得那一回合。谁赢了那个转折点。然后,仍然以顺时针方式,赢得最后一轮的玩家从牌组顶部取得一张牌,并将玩家从他/她的左侧拿下,依此类推。然后你会继续玩,直到甲板空了。谁曾经让球队获得更多分数。

详细说明:

甲板尺寸:40
球员:4人(2队2人)
卡具有特定价值。 (从0到11)

问题

  我知道直接的MiniMax会很贵。通常使用什么算法 对于这种纸牌游戏? 您可以指出的任何文献也都是有益的。

由于

1 个答案:

答案 0 :(得分:1)

这取决于你想要获得多么雄心勃勃,但作为一个开始,你需要一个快速引擎来模拟游戏。

然后你需要一个快速的,因而可能很简单的模型播放器。

此模特选手没有时间计算前锋。它只能对预定义的状态做出反应。所以你的第一步是构建一个足够好的游戏状态。游戏状态应该包括你的牌和一些关于哪些牌被丢弃的历史的统计数据,以及玩家如何玩起来。

接下来,您将构建一个作用于状态的模型播放器。任

A) 一手写,根据你定义的一些启发式播放。但请记住 - 还没有繁重的计算!

B) 写一个普通的玩家,但省略常数和截止值。使用您的模拟引擎和遗传算法与锦标赛选择来演变所述值的良好参数。对于奖励积分,以两人一组的方式进化你的球员,以便他们很好地相互补充。

C) 使用更多的人工智能,让一个基因编程系统(有几个成熟的系统。找一个可以做锦标赛的人。你甚至可以自己实现一个,但是不要忘掉了:)用你的状态为你写整个玩家作为输入。

下一步:

要么你已经有一个伟大的球员,可以认为自己已经完成,或者你想让它变得更好。如果你想让它变得更好你的运气!

使用蒙特卡罗模拟来演出大量的牌,在某种情况下你的每一个选择(如果我理解正确,总有三种选择)。让你的模型玩家每次做出选择时做出决定,让你的蒙特卡罗模拟在你每次进行模拟之间随机地随机播放。

现在你应该有一位出色的纸牌手!

相关问题