目前,我正在开发一个名为布里斯卡斯的西班牙纸牌游戏,或者布里斯科拉,http://en.wikipedia.org/wiki/Briscola。
简而言之,这是一种纸牌游戏,两队两人互相比赛(他们看不见对方的手,甚至连队员都看不见),只有在开始时牌被洗牌,然后三张牌交给每个玩家。以顺时针的方式,每个人抛出一张牌,试图赢得那个回合。谁赢过那个转身就拿分的人。然后,以顺时针的方式,赢得最后一轮比赛的选手,从牌顶拿出一张牌,左边的牌,以此类推。然后你会一直玩到甲板空空如也。谁能得到更多的积分,谁就能赢。
详细信息:
甲板尺寸: 40
球员:4人(2人2人)
卡片有特定的价值。(由0至11)
问题
,我知道直接的MiniMax太贵了。这类纸牌游戏通常使用什么算法?此外,任何你能指出的文献也将是有益的。
谢谢
发布于 2011-05-16 21:12:10
这取决于你有多雄心勃勃,但作为一个开始,你需要一个快速的引擎来模拟比赛。
然后你需要一个快速的,因此可能是简单的,模型播放器。
这个模型玩家将没有时间计算前进。它只能对预定义的状态作出反应。所以你的第一步就是建立一个足够好的游戏状态。游戏状态应该包括你的手和一些统计的历史,哪些牌已被丢弃,可能是如何玩他们的手。
接下来,您将构造一个模型播放器,它对状态起作用。任一
( A)用手写一个,这是根据你定义的一些启发来玩的。但请记住-还没有计算太重!
( B)写一个通用播放器,但省略常量和截断值.使用您的模拟引擎和遗传算法与竞赛选择,以进化良好的参数为上述的值。为了获得加分,让你的球员在两人的队伍中进化,这样他们就能很好地互补。
( C)使用更多的人工智能,让遗传编程系统(有几个成熟的)。找一个能做锦标赛的人。您甚至可以自己实现一个,但我们不要太激动:)为您编写整个播放器,使用您的状态作为输入。
下一步是:
要么你已经有了一个伟大的球员,可以认为自己已经完成了,要么你想让它变得更好。如果你想让你的运气更好的话!
使用蒙特卡洛模拟显示出大量的手,在特定的情况下你的每一个选择(如果我理解正确的话,总是有三个选择)。让你的模型玩家在每次你有选择的时候做出决定,让你的蒙特卡罗模拟在每次你进行模拟的时候随机地洗牌。
现在你应该有一个伟大的扑克牌!
https://stackoverflow.com/questions/6020969
复制相似问题