我正在开发一个模拟二十一点游戏中的第一笔交易的项目。到目前为止,该程序创建了两张随机排名卡(ACE to KING)和随机套装。我正在努力创建一个切换表或if-else梯子将两张卡的附加值分配为可变分数。下面的代码在概念上代表了我想要做的事情,我只是想知道如何使它更简单。谢谢!
public int Score()
{
int score = 0;
if (card1.rank() == TWO && card2.rank() == TWO){
score = 4;
} else if (card1.rank() == THREE && card2.rank() == TWO){
score = 5;
} else if (card1.rank() == FOUR && card2.rank() == TWO){
score = 6;
} else if (card1.rank() == FIVE && card2.rank() == TWO){
score = 7;
} else if (card1.rank() == SIX && card2.rank() == TWO){
score = 8;
} else if (card1.rank() == SEVEN && card2.rank() == TWO){
score = 9;
} else if (card1.rank() == EIGHT && card2.rank() == TWO){
score = 10;
} else if (card1.rank() == NINE && card2.rank() == TWO){
score = 11;
} else if (card1.rank() == TEN && card2.rank() == TWO){
score = 12;
return score;
}
rank()方法调用每张卡的等级的整数值,但是,卡等级在不同的类中分配为TWO = 0,THREE = 1,FOUR = 2 ... QUEEN = 10,KING = 11,ACE = 12所以我试图将“得分”分配给两张牌的实际值,加在一起。很抱歉,如果这令人困惑,我会回答任何问题。
答案 0 :(得分:2)
这样的事情:
enum Rank {
ACE(1),
TWO(2),
THREE(3),
// ...
TEN(10),
JACK(10),
QUEEN(10),
KING(10);
private final int value;
Rank(int value) {
this.value = value;
}
int getValue() {
return this.value;
}
}
// ...
totalValue = card1.getRank().getValue() + card2.getRank().getValue();
如果您不想处理枚举,则可以将排名表示为简单整数。它不太安全,但对于简单和简短的代码都没问题。
但是无论你选择哪种代表,你都需要注意A - 如果你有一个ace,那么将会有另一个10
更大的总和;如果您有两个,则会有一个额外的20
更大的总和。