二十一点帮助:为用户提供关于是打还是站立的建议

时间:2013-05-31 04:16:11

标签: java string blackjack

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

 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/

如果可以,请指出我可以解决的一些错综复杂的代码,谢谢

2 个答案:

答案 0 :(得分:1)

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

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

如果我们也希望计算卡计数,那么我们必须跟踪真实计数(运行的高 - 低计数除以留下的甲板数),以及某些状态(玩家手牌得分与经销商显示卡) )而不是总是做同样的动作,如果真实计数高于x,我们做一个动作,如果低于x,我们做另一个动作。此外,如果真实的数量很低(低于1),你应该下注,并且当它增加超过1时,你应该越来越多地下注,但没有那么多你冒着破产的风险。在这里阅读更多http://wizardofodds.com/games/blackjack/card-counting/high-low/

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

答案 1 :(得分:0)

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

如果你想知道的是“我有什么机会在下次击中时破坏”,那就是(剩下的牌数将会破坏你)/(剩下的剩余牌数)。这不仅需要玩家总数,还需要实际的牌。例如,在单人牌组中,如果一名球员对阵经销商5有两个七分球,那么剩下的49个中有24张胸牌,所以你会在24/49(大约49%)的时间内破产。但是如果你对一个经销商10有一个10和4(也是14),那么剩下的只有22张破产牌,有45%的破坏机会。