想想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()
答案 0 :(得分:4)
在你花大量时间写一个二十一点经销商AI之前,你可能会考虑the dealer doesn't get to make any choices,因为统计上最好的游戏并不真正完全取决于玩家所做的事情。
你可能会选择一个更有趣的游戏来编写真正的AI。
答案 1 :(得分:3)
要实现AI,我认为您不应该尝试将非AI代码修改为AI实现。相反,基于AI的计算机播放器大多需要完全不同的设计,因此我将重新设计整个“播放器”代码。我会去machine learning。随着机器学习,它可以学习,因为它越来越多,并在一段时间内(取决于算法及其实现)它可以让我感到惊讶。 例如,AI可以记录其所有移动/游戏(在数据库中),并根据成功移动的统计数据,在下次出现类似情况时得出决定移动的结论。