Black Jack游戏的问题,当用户点数突破21时,将Ace的值从11更改为1



所以我正在尝试用Java制作一个Black Jack游戏。然而,我一直有一个问题,让用户的手牌点值从超过21并获得王牌时开始下降。我认为这会很简单,"如果handArray是Ace类型,并且点数>21->更改Ace的值。

但事实证明,这相当困难。也许我想得太多了,但我的vrain被炸了,我厌倦了看这个lol。这是我的代码:基本上,我有一个有值的Card对象,所有的卡都存储在一个数组中,然后我有Hand对象,它存储一个卡数组:

int sumUser = 0;
userHand.points= 0;
boolean ace=false;
for(int i = 0; i < userHand.handArray.size(); i++) {
//System.out.println(userHand.handArray.get(0).type +userHand.handArray.get(1).type );


if(userHand.handArray.get(i).type=="Ace") {
if (userHand.points>21) {
userHand.handArray.get(i).value= userHand.handArray.get(i).otherValue;
System.out.println("saved by the ace");
}
}

sumUser = sumUser + userHand.handArray.get(i).value;
userHand.points = sumUser;
System.out.println(userHand.points);

if (userHand.points>21) {
System.out.println("Bust, loser");

btHit.setDisable(true);
btRetry.setVisible(true);
userHand.handArray.removeAll(userHand.handArray);

}

答案:

dealerHand.points= 0;
boolean ace = false;
for(int i = 0; i < dealerHand.handArray.size(); i++) {


//Checks dealer hand for an ace 
if(dealerHand.handArray.get(i).type=="Ace") {
ace = true;
System.out.println("You have an ace");  
}

dealerHand.points += dealerHand.handArray.get(i).value;

//if the hand breaks 21 and has an ace, the ace value is reassigned to one and the 
//hand points value is recalculated
if (dealerHand.points>21 && ace==true) {
dealerHand.points = 0;
for( i = 0; i < dealerHand.handArray.size(); i++) {
if(dealerHand.handArray.get(i).type=="Ace") {
dealerHand.handArray.get(i).value=dealerHand.handArray.get(i).otherValue;
System.out.println("Dealer Ace new value "+dealerHand.handArray.get(i).value);


}dealerHand.points += dealerHand.handArray.get(i).value;
System.out.println("New dealer hand points value "+dealerHand.points);
}

最新更新