所以我正在尝试用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);
}