我是初学者Java学生.所以任何帮助将不胜感激!
我设计了一个类卡和类甲板,我将在我创建的游戏中使用它.到目前为止,我的游戏似乎运行得很好,但我遇到的问题在于我的卡类.我想利用我的getRank()方法来积累玩家所拥有的牌的积分(不论其合适).
例如,如果他们画了2个钻石,那么它将值2分,3分3分......等等.我已经创建了一个String[]调用ranks来尝试这样做,我认为这就是它的作用.但是,我希望所有面部卡片(如国王,女王......)的值都为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];
}
Run Code Online (Sandbox Code Playgroud)
枚举是你的朋友.正如您所发现的,ints不合适,因为它们只适用于某些情况(从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;
}
}
Run Code Online (Sandbox Code Playgroud)
使用此功能,您可以设置等级
public void Card(CardRank rank, CardSuit suit) {
this.rank = rank;
this.suit = suit;
}
public int getRankValue() {
return rank.getValue();
}
Run Code Online (Sandbox Code Playgroud)
枚举的另一个好处是更清晰,自我记录的功能.如果参数都是ints,那么,通过查看签名的类型,不清楚哪个是排名,哪个是诉讼.使用枚举,这不是问题.
我会离开CardSuit这个运动:)
更多信息:
| 归档时间: |
|
| 查看次数: |
1819 次 |
| 最近记录: |