java - 创建卡片组 - 可能更有效地设置值?
问题描述
我试图创建一副纸牌。套房是标准的。描述 王牌王牌。但值是 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++;
}
}
}
解决方案
您需要使卡片得分与您的卡片面不同。
卡片
- 脸(Ace..King)
- 颜色(铁锹、红心、方块、梅花)
这使您可以正常渲染卡片。您的 score 函数也可以简单地返回一个 <= 10 的值,根据面值计算分数。
int getScore() {
return Math.max( face, 10);
}
推荐阅读
- c++ - 添加 cpp11 插件时出现错误消息“未定义对 boost (...) 的引用”
- postgresql - dataframe.to_sql 索引作为 postgresql 中的主键
- c# - 更改场景时 Unity3D 中的奇怪平面行为
- tfs - 如何在 TFS 中从预生产转变为生产升级?
- autodesk-forge - Autodesk 提取器显示错误 #9 - 无可见内容
- c# - 我想在我的电子邮件中嵌入一张图片
- c# - 通过 Service Fabric 反向代理访问 WCF 应用程序
- c# - 任务的 Wait() 方法阻塞任务
- google-bigquery - Wait.on(signals) 在 Apache Beam 中的使用
- hadoop - Sqoop 的语法导入数据库中存在的 100 个表中的 5 个 - 不要使用排除关键字?