2009-02-08 96 views
26

为一款纸牌游戏写一个优秀的电脑对手会有什么策略?大多数纸牌游戏都是不完整信息的游戏,所以简单地映射出和遍历游戏树,就像人们对棋盘游戏所做的那样,似乎并不太有希望。也许人们可以跟踪游戏中的开牌(一旦他们被揭示)并且将概率分配给特定事件(例如,对手仍然具有2张俱乐部牌)。任何好的纸牌游戏AI策略?

有没有人有这方面的经验?链接和方向非常感谢。

+1

算牌 - 如果[够用了MIT(http://www.mitcardcounting.com/ ),对你来说已经足够了。可能是这样的: – new123456 2011-08-15 01:16:48

回答

5

你用概率描述的基本上是扑克AI(或人类扑克专家)的工作原理。关于创建您可能有兴趣阅读的Poker Bot的Coding the Wheel有一系列正在进行的系列。

1

一个具体的答案:实施min-max algorithm随机事件,如绘制卡片包含propabilities而不是硬判决。

+0

这个链接可能会有帮助:https://en.wikipedia.org/wiki/Expectiminimax_tree – 2013-02-06 22:59:47

0

使用常识:让计算机按照相同的规则玩一个人(逻辑),并通过改变AI存储器质量等参数来改变难度级别。

我实现了一个memory game这可能是一个简单的例子,与您正在寻找的相比,但它工作得很好。

3

这又是一个博客,但这方面有趣的是Computer Programming and Magic: The Gathering。如果没有其他因为编程非常复杂而引人注意,MTG对卡片有一个规则,因为作者实际上在三年前完成了他的第一个版本的程序。大量的游戏项目并没有超出规划阶段。

他在他的博客中描述的项目是开源的,所以你可以看到你有没有什么有趣的东西,而且他非常多产地发布到他的博客。

1

阿尔伯塔大学有一个名为Polaris的扑克比赛项目,与比赛中的专业人士竞争。他们的web site有很多信息。

0

你是对的,遍历''游戏树不会工作,因为你没有足够的信息,但如果你生成几个潜在的游戏树,看看哪些选项更可能导致更好的结果,那么你会有一个AI。

如果你有时间可以详尽地做到这一点,并生成所有可能的场景,但实际上你没有10分钟来玩牌,所以只占整个空间的一小部分。

我写了一个扑克机器人,它做到了这一点,它发挥了一个好的游戏,但我在处理位置影响之前就失去了兴趣,所以它从来没有强大。

+0

你的描述非常类似于“Monte-Carlo Tree Search” – 2012-10-08 21:25:43

0

如果你没有最高效的机器人,那么我会使用一些逻辑语言。它越慢,语言越通用,但可能是一个开始。

关键要素是定义您感兴趣的策略并使用您的逻辑语言对此策略进行建模。

如果你是在一个猜谜游戏的思维,例如,你可以有两种策略:

strategy-1 guess the card you think is the most likely; or 

strategy-2 among the cards that are the most likely, guess the card that 

my opponent believes to be the most likely. 

现在你的问题是定义在正式的语言策略,你可以解释(你需要一个声音语言)。

通常这种逻辑的语言应该能够表达基本概率,至少。例如通过下面的形式给出一个语言:

A = c | -A | A v A | A -> A | P(A) >= r | P(A) >= P(A) | \forall c . A(c) 

对RA理性0和1之间读P(C)> = R是“玩家认为,对手具有卡C的概率至少R“。

例如,策略-1看起来像

Guess card C only if holds that 
\forall C'. P(C) >= P(C') . 

策略-2看起来像

Guess card C only if holds that 
[\forall C'. P(C) >= P(C')]^[-\forall C''. P'(C'') > P'(C)] 

(P'(c)是通过我的对手分配概率)。

如果你的策略是由下式战略的行动功能会被简单地询问了可能的卡满足策略给出:

act gameState = take 1 [c : c |= STRATEGY] 

这种语言,我给的例子并不是表现足以表达隐藏你的类型的问题(例如在扑克或HearthStone等游戏中非常重要的策略)。对于需要进行一些扩展的策略。

另一个常见的扩展是动态操作符,所以你可以表达一些策略,比如'在最强卡被打败后我拿着棋盘'。

关于'跟踪哪些牌是开放的'的评论,它是有限的,因为你没有考虑你的对手在给你的行为考虑什么。策略2是如何改进具有高阶信念的计算机的例子。

对于猜谜游戏,我建议从Ditmarsch的文章叫做逻辑的坑。 (http://link.springer.com/article/10.1007/s11229-005-4331-5) (它并没有实现一个AI,只是表达了一个叫PIT的游戏,我认为它不值得为它付钱,如果你可以免费获得它,那也许值得,也许你可以找他的论文,而不是它是免费的)

我喜欢写在炉边的论文,但我从来没有找到时间:(