简体   繁体   English

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

[英]Issue with a Black Jack Game, changing a value of an Ace from 11 to 1 when the user points breaks 21

So I'm trying to make a Black Jack game in Java.所以我正在尝试在 Java 中制作一个黑杰克游戏。 However, I've been having an issue with making the user's Hand point value drop from when it goes over 21 and has an Ace.但是,当用户的手点值超过 21 并且拥有 A 时,我一直遇到问题。 I thought this would be simple 'if handArray has an Ace type and points>21 -> change value of Ace'.我认为这很简单'如果 handArray 具有 Ace 类型并且 points>21 -> 更改 Ace 的值'。

But this is proving to be fairly difficult.但事实证明这是相当困难的。 Maybe I'm overthinking it, but my vrain is fried and I'm tired of looking at this lol.也许我想多了,但我的 vrain 被炸了,我厌倦了看着这个大声笑。 Here is my code: Basically I have a Card object with a value, all the cards are stored in an array, then I have Hand object that stores an array of Cards:这是我的代码:基本上我有一个带有值的卡片 object,所有卡片都存储在一个数组中,然后我有一个存储卡片数组的手 object:

    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);
            
        }

Answer:回答:

       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);
                }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM