游戏中纸牌的等级
我是一名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];
}
# 1 楼答案
您可以重新构造您的卡类,使其也具有用于存储每张卡的点值的“值”或等效参数。然而,分值更多的是一种游戏逻辑。也许给你的游戏一个方法
getValue(Card c)
,根据你的逻辑将一张牌的等级转换成一个值。该方法可以如下所示# 2 楼答案
Enum是你的朋友。正如您所发现的,
int
是不合适的,因为它们只适用于某些情况(ace到ten),并且没有任何东西可以阻止您的用户提供非法值(负值或大于13)。枚举既可以强制执行正确的值,也可以轻松关联您喜欢的任何数值使用此选项,您可以使用
Enum的另一个好处是更加清晰、自我记录功能。如果参数都是
int
,那么,仅通过查看签名的类型,就不清楚哪个是秩,哪个是适合的。对于枚举,这不是问题我将把
CardSuit
作为练习:)更多信息: