5

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

简而言之,这是一个纸牌游戏,两队 2 人对战(他们看不到对方的手,甚至连队员都看不到),只在开始时洗牌,然后将三张牌交给每个玩家. 以顺时针的方式,每个人都掷出一张牌来试图赢得这一轮。谁赢了那个回合就拿分。然后,仍然以顺时针方式,最后一轮获胜的玩家从牌堆顶部拿一张牌,然后是他/她左边的玩家,依此类推。然后你将继续玩几轮,直到甲板空了。得分多的队伍获胜。

细节:

牌组大小:40 名
玩家:4(2 支球队,每支 2 支)
卡片具有特定价值。(从 0 到 11)

问题

我知道直接的 MiniMax 会很贵。这类纸牌游戏通常使用哪些算法?此外,您可以指出的任何文献也将是有益的。

谢谢

4

1 回答 1

3

这取决于您想要获得多大的野心,但首先您需要一个快速的引擎来模拟游戏。

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

这个模型玩家将没有时间向前计算。它只能对预定义的状态做出反应。所以你的第一步是构建一个足够好的游戏状态。游戏状态应该包括你的手牌和一些历史上哪些牌被丢弃的统计数据,也许还有玩家如何玩他们的手牌。

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

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

B) 编写一个通用播放器,但省略常数和截止值。将您的模拟引擎和遗传算法与锦标赛选择一起使用,为所述值进化出良好的参数。对于奖励积分,将您的球员分成两人一组,以便他们很好地互补。

C) 使用更多的 AI 并让一个基因编程系统(有一些成熟的。找到一个可以进行比赛的。你甚至可以自己实现一个,但我们不要得意忘形 :) 为你编写整个玩家,使用您的状态作为输入。

下一步:

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

使用蒙特卡洛模拟来玩大量的手牌,你的每一个选择都在特定的情况下(如果我理解正确的话,总是有三个选择)。让您的模型玩家在您每次有选择时做出决定,并让您的蒙特卡洛模拟在您每次进行模拟之间随机洗牌。

现在你应该有一个很棒的纸牌玩家了!

于 2011-05-16T21:12:10.053 回答