首页 > 解决方案 > 创建卡片组 - 可能更有效地设置值?

问题描述

我试图创建一副纸牌。套房是标准的。描述 王牌王牌。但值是 1 到 10,王后和杰克也是 10。我很难想出一种更有效地初始化正确值的方法。

我的卡类使用符号常量说明该字段仅在值介于 1-10 之间时才会被初始化。尽管当我尝试将值设置为大于 10 时。值仍然会更改。我知道我错过了一些东西。

这些是我的类卡的常量和设置方法。

public static final int MIN = 1;
public static final int MAX = 10;

/**
 * @param used to set the value field as an int
 */
public void setValue(int value){

    if(value >= MIN && value <= MAX){

        this.suit = suit;
    } else {
        
        System.out.print("Please input a suit");
    
    }
}

这是我的套件和描述数组

public static final String[] SUITS = {"Hearts", "Diamonds", "Spades", "Clubs"};

public static final String[] DESCRIPTIONS = 
    {"Ace", "Two", "Three", "Four", "Five",
        "Six", "Seven", "Eight", "Nine","Ten", 
        "Jack", "Queen", "King"};

这是我在甲板课上的粗略方法,虽然我命名了我的甲板卡

/**
 * loads deck with cards
 */
public void loadDeck(){
   int value = 1;
   int counter= 0;
   for(int suits = 0; suits < 4; suits++){
        
       for(int description = 0; description < 13; description++){

            int index = 0;
            
            card[index] = new Card (DESCRIPTIONS[description], SUITS[suits], value);
           
            System.out.println(card[index].getSuit() + card[index].getDescription()
                + card[index].getValue());

            index++;

            if(value == 10) {
                
                value--;
                counter++;
                if(counter == 4) {
                    value = 0;
                    counter = 0;
                }

            }
            value++;
        }

    }

}

标签: javaobject

解决方案


您需要使卡片得分与您的卡片面不同。

卡片

  • 脸(Ace..King)
  • 颜色(铁锹、红心、方块、梅花)

这使您可以正常渲染卡片。您的 score 函数也可以简单地返回一个 <= 10 的值,根据面值计算分数。

int getScore() {
    return Math.max( face, 10);
}

推荐阅读