我是一名 Java 初学者。因此,任何帮助将不胜感激!
我设计了一个卡片类和甲板类,我将在我创建的游戏中使用它们。到目前为止,我的游戏似乎运行得很好,但问题出在我的 Cards 类上。我想利用 getRank() 方法为玩家拥有的牌(无论花色如何)积累积分。
例如,如果他们抽到 2 颗方块,则价值 2 分,3 颗红心则价值 3 分……等等。我创建了一个String[]
called ranks
尝试这样做,并且我think这就是它的作用。但是,我希望所有人头牌(如国王、王后...)的值为 10。但并非所有这些牌都位于我的数组中的索引 10 处。我能否就如何调整这一点提供一些指导?
先感谢您。
int rank;
int suit;
String[]ranks = { " "," ", " " } //all 13 ranks from Ace to King
String[]suits = { " ", " ", " "} //all ranks
public Card(int rank, int suit){
this.rank = rank;
this.suit = suit;
}
public void setRank(int rank){
this.rank = rank;
}
public int getRank(){
return rank;
}
//more code for suits
public String toString(){
return ranks[rank]+" of "+suits[suit];
}
枚举是你的朋友。正如你所发现的,int
s 是不合适的,因为它们仅适用于某些情况(从 ace 到 10),并且没有什么可以阻止您的用户给出非法值(负值或大于 13)。枚举既可以强制执行正确的值,也可以轻松关联您喜欢的任何数值。
public enum CardRank {
ACE(1),
TWO(2),
THREE(3),
...
TEN(10),
JACK(10),
QUEEN(10),
KING(10);
private final int value;
CardRank(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
使用这个,你可以设置排名
public void Card(CardRank rank, CardSuit suit) {
this.rank = rank;
this.suit = suit;
}
public int getRankValue() {
return rank.getValue();
}
枚举的另一个好处是much更清晰、自记录的功能。如果参数都是int
那么,仅仅看签名的类型,并不清楚哪个是等级,哪个是花色。对于枚举来说,这不是问题。
我会离开CardSuit
作为练习:)
更多信息:
- http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html
- Java 中的“枚举”有什么用?
- 什么是枚举以及它们为何有用?
- Java 类卡枚举示例。修改
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)