Java Card游戏:需要Deck Class帮助

时间:2013-02-24 01:33:15

标签: java arrays oop class project

这是我关于Stack Overflow的第一个问题,所以请原谅我,如果我在我的问题中有一个菜鸟错误,请随时纠正我,因为我打算在接下来的几个月内更多地使用这个网站。

无论如何,我是高中一年级的12年级学生,我一直在做我的一个功课问题。 所以基本上我们已经给了一个创建战争游戏(纸牌游戏)的项目,我们被要求每天做一小块。到目前为止,一切都一直很好,直到今天,因此我的问题是你们所有人。

以下是该项目的内容:

  • 它有什么:
    • 私人int值:卡的价值
    • 私人字符套装:卡片套装
    • 绘制私人布尔值:卡片是否已从牌组中抽出
  • 它的作用:
    • 公共卡片(int val,char s):创建一张值为val,套装为s且设为False的卡片
    • Public int getValue():返回卡片的值
    • Public char getSuit():返回卡片的诉讼
    • Public Boolean isDrawn():返回是否已绘制卡片
    • Public String toString():以“value of suit”
    • 的形式返回描述卡片的字符串

甲板

  • 它有什么:
    • 私人字符[]套装= {'c','d','h','s'}:代表诉讼
    • Public int numCards:牌组中的牌数(传统上是52 - 将其降低以进行测试!)
    • 私人卡[]牌组:存储为牌阵列的牌组

到目前为止,我已经完成了所有事情。

  • 它的作用:
    • 公共甲板():创建一副牌 - 价值范围为2-14,每件西装之一
    • 公共卡牌drawCard():从尚未绘制的牌组中抽取一张随机牌
    • Public String toString():您想要进行测试的设计

现在我已经在Quynh先生的帮助下完成了公共套牌步骤但是我对如何创建drawCard方法感到困惑。这是我到目前为止所做的:

public Card drawnCard(){
        int randNum = (int) Math.random()*13+2;
    }

所以我知道上面的代码创建了一个介于2和14之间的随机数,但是如何使用它来绘制物理卡呢?喜欢我输入什么,以便程序知道画一张卡?对不起,我知道你现在可能觉得我要求你完成每一步,但我真的迷路了,需要你的帮助!

对于编程而言,我是新手,因此如果这个问题对你来说太简单/ noobie我很抱歉,但我真的需要你的帮助:)

感谢您的时间!

3 个答案:

答案 0 :(得分:2)

作为初学者,您的Deck构造函数应该与此类似

for(int i = 2; i <= 14; i++){
   for(int j = 0; j < suits.length; j++){
     Card card = new Card(i, suits[j]);
     card.isDrawn(false);
     //ADD CARD TO YOUR DECK HERE  
   }
}

对于drawCard函数,只需将1-52中的数字随机化(假设您使用的是52张牌),然后从您的Deck中绘制并设置.isDrawn(true)

答案 1 :(得分:0)

像这样......

public class Deck {

    private Card[] cards = new Card[52];
    private int index = -1;

    public Deck() {
        // build deck
        for (int i=0; i<52; ++i) {
            if (i<13) cards[i] = new Card('s',i+2);
            else if (i<26) cards[i] = new Card('c',i-13+2);
            else if (i<39) cards[i] = new Card('d',i-26+2);
            else if (i<52) cards[i] = new Card('h',i-39+2);        
        }
        // shuffle deck
        Collections.shuffle(Arrays.asList(cards));
    }

    public Card drawCard() {
        ++index;
        cards[index].drawn();            
        return cards[index];
    }
}

class Card {

    private char suit;
    private int value;
    private boolean drawn = false;

    Card(char s, int v) {
        suit = s;
        value = v;
    }

    void drawn() { drawn = true; }

    boolean isDrawn() { return drawn; }
}

答案 2 :(得分:-1)

您应该使用数组列表来更轻松地进行随机播放。由于这是家庭作业,我不会给你确切的代码,但是,

ArrayList<Card> deck=new ArrayList<Card>();
        //add a loop with
        {
            Card card=new Card("initilize card here");
            deck.add(card);
        }

从长远来看,这应该让你开始并使其更容易。