我希望我的经销商在选择何时在BlackJack游戏中画卡时更加“智能”

问题描述:

想起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() 

在你花大量时间写一个二十一点经销商AI之前,你可能会认为一般是the dealer doesn't get to make any choices,因为统计上最好的玩法并不完全取决于玩家的行为。

你可能会选择一个更有趣的游戏来写一个真正的AI。

+0

这不是问题的答案,但我同意:) – 0xc0de

+1

嗯,问题是“我能在这里添加什么?”我的答案是“不多”:--P –

要实现一个AI,我认为你不应该试图将你的非AI代码修改为AI实现。相反,基于人工智能的电脑播放器大多需要完全不同的设计,所以我会重新设计整个“播放器”代码。我会例如去machine learning。随着机器学习,它可以学习,因为它发挥越来越多,并在一段时间(取决于算法和它的实现),它可以让我感到惊讶。 例如,AI可以记录其所有移动/播放(在数据库中),并根据成功移动的统计数据得出下一次出现类似情况时确定其移动的结论。