嘿我试图制作一张卡片
牌组应包含52张牌,
ofc with spade,diamond,heart,clubs 有等级,
这是我的代码到目前为止我还没有得到 提前感谢您的帮助。
让牌组洗牌,创建一个代表包含52张牌的牌组,当一个新牌 创建此类,使用它将包含的卡初始化卡片组。
public class Card {
int[] deck = new int[52];
String[] suits = {"Spades", "Hearts", "Diamonds", "Clubs"};
String[] ranks = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"};
Card() {
for (int i = 0; i < deck.length; i++) {
deck[i] = i;
}
}
}
答案 0 :(得分:2)
卡不是卡片组。 卡具有属性(即成员变量),如suit
和rank
(尽管为了比较,通常使用整数 - 或枚举 - 用于排名然后更改方式它们被显示出来。)
卡片组是多张牌;通常在创建卡组时建立限制。在这种情况下,suits[]
和ranks[]
可用于构建卡片中的多张卡片(为每张卡片提供特定的套装并在它被创造)。在Java中执行此操作的最简单方法是使用嵌套循环 - 每个维度一次。
每张卡片的“颜色”来自套装,不需要存放,因为它可以通过套装确定。如果使用枚举,则只能将其指定为属性。
按照上述逻辑,这是一组示例:
class Card {
final public String suit;
final public String rank;
public Card(String suit, String rank) {
// Assign suit/rank from arguments
}
String getColor() {
// Return the color based on suit (effectively "for free" if
// using an enumeration)
}
}
class DeckOfCards {
String[] suits = {..};
String[] ranks = {..};
// Arrays are icky to deal with; favor Lists/Collections.
List<Card> cards = new ArrayList<Card>();
public DeckOfCards () {
// For each suit/rank pair, create a Card and add it
// to the cards collection.
// You'll want nested loops, as shown by another answer.
}
public List<Card> getCards () {
// Return cards, perhaps
}
// Other methods relating to the Deck of Cards
public void shuffle () {
}
}
虽然我建议调查enums,但上面应该指出两个不同的“事物”之间的区别 - 卡片和卡片的甲板(或收集)。另一个答案包含显示如何从两个输入数组的叉积生成卡片的代码。
答案 1 :(得分:0)
首先,将suit []和rank []转换为int数组。使甲板成为一组卡片,并使甲板和你在不同的calss中使用的构造函数(被称为甲板)将构造函数更改为Card(int suit,int name)只需这样做:
for(int i = 0; i < 4; i++) for(int j = 0; j < 13; j++){
Cards[13*i + j] = new Card(i, j);
}
答案 2 :(得分:0)
创建一个具有套装和值属性的Card
对象。
创建一个方法来创建所有52张卡的列表。
对于你的套牌,我建议使用Deque
,经常发音为“Deck”,并且与一副纸牌相似。
然后创建洗牌甲板
//Create a List of cards
List<Card> deckList = ... //A method to create your 52 cards
Collections.shuffle(deckList);
Deque<Card> deck = new ArrayDeque<Card>(deckList);