0

想起BlackJack遊戲...我創建了一種簡單計算的方法,無論計算機是否應該畫卡片,規則。我想讓這個更加「聰明」,因此即使對於創作者(我)來說也會讓遊戲變得更加難以預測。我希望我的經銷商在選擇何時在BlackJack遊戲中畫卡時更加「智能」

我可以在這裏添加什麼?如何讓我的經銷商在沒有硬編碼規則的情況下進行抽籤?

// Compute if computer should draw a hand or not depending on hand value of player. 
// Also, computer may take higher risk if player has reached BLACKJACK. 
private static Deck dealerDraw(Deck deck, Hand player, Hand player2, Hand dealer) 
{ 
    if(player.getHandTotal() <= BLACKJACK) 
    { 
     // Dealer takes a precaution and only draws 
     // if hand total is less than or equal to 15. 
     while(dealer.getHandTotal() <= 15 && 
       (dealer.getHandTotal() <= player.getHandTotal() || 
       dealer.getHandTotal() <= player2.getHandTotal())) 
      deck = drawFromDeck(deck, dealer); 

     // Player has reached BLACKJACK! 
     // There's no or little chance to win, 
     // dealer risks and draws even if total is high. 
     if (player.getHandTotal() == BLACKJACK || 
       player2.getHandTotal() == BLACKJACK) 
      while(dealer.getHandTotal() < BLACKJACK && 
        dealer.getHandTotal() != BLACKJACK) 
       deck = drawFromDeck(deck, dealer); 
    } // end if() 

    return deck; 
} // dealerDraw() 

回答

4

在你花大量時間寫一個二十一點經銷商AI之前,你可能會認爲一般是the dealer doesn't get to make any choices,因爲統計上最好的玩法並不完全取決於玩家的行爲。

你可能會選擇一個更有趣的遊戲來寫一個真正的AI。

+0

這不是問題的答案,但我同意:) – 0xc0de

+1

嗯,問題是「我能在這裏添加什麼?」我的答案是「不多」:--P –

2

要實現一個AI,我認爲你不應該試圖將你的非AI代碼修改爲AI實現。相反,基於人工智能的電腦播放器大多需要完全不同的設計,所以我會重新設計整個「播放器」代碼。我會例如去machine learning。隨着機器學習,它可以學習,因爲它發揮越來越多,並在一段時間(取決於算法和它的實現),它可以讓我感到驚訝。 例如,AI可以記錄其所有移動/播放(在數據庫中),並根據成功移動的統計數據得出下一次出現類似情況時確定其移動的結論。

相關問題