0

好的,所以我正在制作一个使用输出框的二十一点程序。我的问题是试图为用户提供某种帮助。我需要帮助找出此时该做什么:

 if (y.equalsIgnoreCase("Y"))
 {
               if(userHand.getBlackjackValue()+10<21)
               {
                   System.out.println("You should hit.");
               }
               if(userHand.getBlackjackValue()+10>21)
               {

               }
  }

问题在于第二个内部 if 语句。应该如何确定球员应该继续击球还是应该站立。我将在与程序有关的包中包含该类以及其他类。我在想我可能必须在项目中添加更多方法才能使其正常工作

https://sites.google.com/site/np2701/

如果你能指出一些我可以修复的复杂代码,谢谢

4

2 回答 2

1

如果算牌超出范围,请为您使用的规则(套牌数量等)使用基本策略表:http ://wizardofodds.com/games/blackjack/strategy/calculator/ - 您应该索引表根据您的手牌点值和庄家牌,返回存储在表中的选项。您可以选择将其作为二维数组存储在代码中,或者从文件中加载。您可以将其存储为字符并解释字符的含义,或者作为枚举,例如,您可以将枚举 Hints 称为具有成员 Hit、Stand、Split 等的枚举。

如果忽略算牌,基本策略表可以保证提供最大的成功几率,因为我们采用了所有相关状态并选择了统计上的最佳选项。

如果我们也想计算卡片计数,那么我们必须跟踪真实计数(运行的高低计数除以剩余的牌组数量),并且对于某些状态(玩家手牌得分 vs 庄家显示的牌)而不是总是做同样的动作,如果 True Count 高于 x,我们会做一个动作,如果它低于 x,我们会做另一个动作。此外,如果真实计数很低(低于 1),您应该几乎不下注,并且随着实际计数增加超过 1 时下注越来越多,但您冒着破产风险的风险也不大。在这里阅读更多http://wizardofodds.com/games/blackjack/card-counting/high-low/

为了以编程方式表示这样的索引,我将创建一个包含三个字段的对象:索引下方操作、索引上方操作和索引值。

于 2013-05-31T04:22:54.103 回答
0

如果您真的想向用户建议正确的玩法,您需要查找您正在模拟的游戏的基本策略。这些表是基于玩家的总数(你必须知道它是软的还是硬的),以及庄家的明牌。

如果您只想知道“我在下一次命中时破坏的机会是多少”,那就是(将破坏您的剩余卡片数量)/(剩余卡片总数)。这不仅需要玩家总数,还需要实际的牌。例如,在单副牌中,如果玩家有两个 7 对抗庄家 5,那么剩下的 49 张牌中有 24 张爆牌,因此您将有 24/49(约 49%)的时间爆牌。但是,如果你有一张 10 和一张 4(也有 14 张)对抗庄家 10,则只剩下 22 张爆牌,有 45% 的机会爆牌。

于 2013-05-31T22:16:40.200 回答