Java堆栈简单的纸牌

时间:2015-03-13 03:50:42

标签: java arrays stack

因此,对于我的任务,我需要使用堆栈创建简单的纸牌(无GUI)。我们被允许从Java实现Stack API。我们也应该有3个班级。 Card,CardStack,Stackitaire

所以我的Card课很简单。它使用参数suit,value和isFaceUp创建一个Card对象。一切都很好。

然后我创建代表一堆类的CardStack类。有4种类型:'s' - stock,'w' - waste,'f' - 基础和't' - tableau。 它应该具有以下内容。我还在对象中包含了一个私有字段“type”,并为它添加了一个getter和setter。

public class CardStack extends Stack {
private char type;

public char getType() {
    return type;
}

public void setType(char type) {
    this.type = type;
}

public CardStack(char type) {
    this.setType(type);
    Stack<Card> Stack = new Stack<Card> ();
}

public void pushes(Card newCard) {
    this.push(newCard);
}

public Card pops() {
    this.pop();
    return null;
}

public boolean isEmpty() {
    return this.empty();
}

public int size() {
    return capacityIncrement;
}

然而,我觉得这太简单了。那有意义吗?

现在,我们应该为游戏的实际内容做些什么。

1.“你应该有一个代表画面堆栈的堆栈数组,一个代表基础堆栈的堆栈数组,以及分别代表库存和废弃堆栈的2个独立堆栈”

为什么我们需要一个堆栈数组?为什么一堆不够?这是我教授想要的吗?

static CardStack[] tableau;
static CardStack[] foundation;
static CardStack waste = new CardStack('w');
static CardStack stock = new CardStack('s');

然后我们创建了52张卡的主要堆栈,我这样做了

static Card[] mainStack = new Card[53];

for (int i = 1; i < 13; i++) {
        for (int j = 1; j < 4; j++) {
            mainStack[i * j] = new Card(i, j, true);
        }
    }

我认为那部分是正确的。

好的,然后“将所有52张牌从游戏堆栈移动到牌组堆叠中。然后,使用Collections类中的静态方法shuffle()将牌组洗牌”

这是我被卷入的地方。主堆是一张卡片,里面有52张卡片。卡座堆栈是不是数组的堆栈。如何将数组放入堆栈,然后如何在堆栈上使用方法shuffle。不仅仅是数组的shuffle方法吗?

还有一堆,但我想现在已经够了

1 个答案:

答案 0 :(得分:2)

  

为什么我们需要一个堆栈数组?为什么没有足够的堆叠?

想想游戏的玩法。你有一个基础,即基础卡的7,IIRC,堆栈。您还有4张堆栈用于您正在处理卡片的表格。当然,你有单堆卡片用于废物和库存。

  

这是我教授想要的吗?

他们可能是唯一真正回答这个问题的人,但对我来说这看起来不错。

  

如何将数组放入堆栈,然后如何使用该方法   在堆栈上洗牌。不仅仅是数组的shuffle方法吗?

你可以将push个元素放到堆栈中,但我不会对堆栈进行洗牌。它不在堆栈功能的轮室中。如果您将它们放入并随后洗牌,您的预期订单将不再存在。对阵列进行随机播放,然后以相同的方式将卡分发到适当的堆栈中。