2009-02-08 49 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的遊戲,我認爲它不值得爲它付錢,如果你可以免費獲得它,那也許值得,也許你可以找他的論文,而不是它是免費的)

我喜歡寫在爐邊的論文,但我從來沒有找到時間:(