met*_*fox 5 java algorithm artificial-intelligence playing-cards
目前我正在努力实现一个名为 Briscas 或 Briscola 的西班牙纸牌游戏,http://en.wikipedia.org/wiki/Briscola
简而言之,这是一个纸牌游戏,两队2人对战(他们看不到对方的手,甚至连队员都看不到),只在开始洗牌,然后将三张牌交给每个玩家. 以顺时针方式,每个人都扔一张牌,试图赢得那个回合。谁赢得了那个转折点。然后,仍然是顺时针方向,最后一轮获胜的玩家从牌堆顶拿一张牌,然后从他/她左边的玩家拿一张牌,依此类推。然后您将继续玩游戏,直到牌组为空。谁拥有更多积分的球队获胜。
细节:
甲板大小:40
玩家:4(2 组 2)
卡具有特定价值。(从 0 到 11)
我知道直接使用 MiniMax 会很贵。这类纸牌游戏通常使用哪些算法?此外,您可以指向的任何文献也将是有益的。
谢谢
这取决于您想要达到多大的目标,但作为开始,您需要一个快速的引擎来模拟游戏。
那么您需要一个快速且可能简单的模型播放器。
该模型玩家将没有时间向前计算。它只能对预定义的状态做出反应。所以你的第一步是构建一个足够好的游戏状态。游戏状态应该包括你的手牌和一些已被丢弃的牌的历史统计数据,以及玩家如何玩他们的手牌。
接下来,您构建一个作用于状态的模型玩家。任何一个
A)手动编写一个,根据您定义的一些启发式进行播放。但请记住 - 还没有进行繁重的计算!
B) 编写一个通用玩家,但省略常量和截止值。使用模拟引擎和遗传算法进行锦标赛选择,为所述值演化出良好的参数。为了获得奖励积分,请以两人一组的方式发展您的球员,以便他们能够很好地互补。
C) 使用更多的人工智能并让遗传编程系统(有一些成熟的系统。找到一个可以进行锦标赛的系统。您甚至可以自己实现一个,但我们不要得意忘形:)为您编写整个播放器,使用您的状态作为输入。
下一步:
要么你已经拥有一名出色的球员并且可以认为自己已经完成了,要么你想要让它变得更好。如果你想让它变得更好,那么你很幸运!
使用蒙特卡罗模拟来玩大量的手牌,每个选择都在特定的情况下进行(如果我理解正确的话,总是有三种选择)。让你的模型玩家在每次有选择时做出决定,并让你的蒙特卡罗模拟在每次进行模拟时随机洗牌。
现在你应该拥有一位出色的纸牌玩家了!