创建一堆卡片

Posted

技术标签:

【中文标题】创建一堆卡片【英文标题】:Create a stack of cards 【发布时间】:2022-01-02 06:35:18 【问题描述】:

我目前有以下卡类;

public class Card 

    /** hearts, diamond, club, spades */
    private String suit;

    /** ace, 2, 3, 4, 5, 6, 7, 8, 9, 10, jack, queen, king */
    private String rank;

    /** 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 */
    private int pointValue;

    public Card(String cardSuit, String cardRank, int cardPointValue) 
        /** initialise a new card with the given values for suit rank and point value */
        suit = cardSuit;
        rank = cardRank;
        pointValue = cardPointValue;
    

    /** accessor methods - help client access private instance fields - oop*/
    public String getSuit() 
        return suit;
    

    public String getRank() 
        return rank;
    

    public int getPointValue() 
        return pointValue;
    

    /** test to see if card given from values above matches card given as parameter to this argument*/
    public boolean matches(Card otherCard) 
        return otherCard.getSuit().equals(this.getSuit())
        && otherCard.getRank().equals(this.getRank())
        && otherCard.getPointValue() == this.getPointValue();
    

    /** overriding toString method allows us to output meaningful content as default function returns gibberish (essentially) */
    @Override
    public String toString() 
        return rank + " of " + suit + " (point value = " + pointValue + ")";
    

我想创建一组所有可能的卡片组合,以显示沿线的输出;

Six of Hearts (value = 6)
Ace of Clubs (value = 1)

我有以下甲板课程,但我卡住了从这里去哪里;

public class Deck 
    String suit[] = "Hearts", "Clubs", "Diamonds", "Spades";
    String rank[] = "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "King", "Queen", "Ace";
    int pointValue[] = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13;
    Card[] deck = new Card[52];

谢谢

【问题讨论】:

Deck 有一个 Cards 数组,但该数组的每个元素都是空的。考虑添加一个构造函数来初始化每个元素。此外,还不清楚为什么Deck 会有suit[]rank[]pointValue[](因为每张卡都为自己定义了这些属性)。 迭代suits,迭代ranks,为每个组合创建一个Card。 --- 关于代码的一些注释:西装和军衔是Enums 的主要候选者。我建议阅读有关该主题的教程,例如this one from oracle.com。 - 虽然可以将数组括号写在变量名之后,但我们通常将它们写在类型之后,因为它们会影响类型(String suit[] -> String[] suit, String rank[] -> String[] rank 那么我应该将枚举数据类型放在我的卡片类还是卡片组类中? 【参考方案1】:

您可以这样创建组合:

List<Card> deck = new ArrayList<Card>();
for(int i=0;i<suit.length;i++)

    for(int j=0;i<rank.length;j++)
    
        Card card = new Card(suit[i], rank[j], pointValue[j]);
        deck.add(card);
    

【讨论】:

很遗憾我不能使用数组列表

以上是关于创建一堆卡片的主要内容,如果未能解决你的问题,请参考以下文章

有人可以帮我在pygame中为扑克游戏创建一副纸牌吗

使用 ForEach 分层视图并使用 ZStack 偏移以创建一堆扑克筹码 (SwiftUI)

页面打桩插件Alvaro Trigo。创建一堆滚动的部分。http://alvarotrigo.com/pagePiling/

如何在按钮单击时创建卡片?

创建一百万个对象,每个对象有 12 个双打

如何使用 int 数组创建带有面孔和西装的卡片组?