BlackJack创建动态甲板C OOP

时间:2012-10-26 21:31:42

标签: c++ oop blackjack

我的教授将这个作业分配给我们,但是我不知道如何做第一步。 我不是要求任何人做作业,只是请某人帮我解决第一个问题

  1. 动态创建套牌
  2. 这个问题是基于两个文件(他提供的)

    “card.h”

    //*********************************************************
    //  CLASS DECLARATION
    //*********************************************************
    class Card
    {   
        //*****************************************************
        //  Public Members         
        //*****************************************************
       public: 
        // Exception classes
        class NotInitalized {};
    
        // Enumeration for Suit
        enum Suit { Clubs, Diamonds, Hearts, Spades, 
                   UNKNOWN };
    
        // Enumeration for Card Name
           enum CardName { Ace, Two, Three, Four, Five, Six,
                        Seven, Eight, Nine, Ten, Jack, 
                        Queen, King, UNKNOWN };
    
        // constructors
    //*****************************************************
    // Card
    //  
    // Create uninitialized card.  Must be initialized with 
    //  'setCard()' before use.
    //*****************************************************
        Card();    // card is not initialized
    //*****************************************************
    // Card
    //  
    // Create a card based its ordinal position.
    //     cards are ordered by suit first in the order 
    //     Clubs, Diamonds, Hearts and Spades, and within 
    //     the suit they are ordered Act thru King.
    //******************************************************
        Card(int); // number between 1-52
    
    //******************************************************
    // Card
    //  
    // Create a card with the given name and suit.
    //*******************************************************
           Card(Suit, CardName);
    
        // methods
        //*******************************************************
        // setCard
        //  
        //  Set the Suit and Name of the card
        //*******************************************************
            void setCard(Suit, CardName);
    
        //*******************************************************
        // getSuit
        //  
        //  returns the element of the Suit enumeration 
        // representing the suit of the card
        //*******************************************************
        int      getSuit();
    
        //*******************************************************
        // getCardName
        //  
        //  returns the element of the CardName enumeration 
        //  representing the card
        //*******************************************************
        int    getCardName();
    
        //*******************************************************
        // getCardValue
        //  
        //  returns face value of card.  For Ace -1 is the value.
        //*******************************************************
        int         getCardValue();
    
         //*****************************************************
         // toString
         // 
         // return the string representation of the card. 
         //    e.g.,"Ace of Spades"
         //*****************************************************
           string      toString();
    
    //************************************************
    //  Private Members    
    //************************************************
    private:
        // the Card’s suit (uses Suit enum)
        Suit      suit = Suit::UNKNOWN; 
    
        // the Card’s name (uses CardName enum)
        CardName  name = CardName::UNKNOWN; 
    };
    

    第二堂课是甲板课。这个类代表标准扑克牌中的52张牌。在内部,卡片中的卡片应保存在一组Card对象中。还应该有一个并行的Card指针数组,其中可以存储每次shuffle之后的卡的顺序。

    当创建Deck对象时,它会创建52张牌并将其随机播放。如果牌组在重新洗牌之前用尽牌,则dealCard()方法应该抛出DeckEmpty异常。

    因为这个类创建了卡对象,所以它应该有一个析构函数,可以在删除Deck时删除所有相关的卡对象。

    下面是Deck类的类声明。

    //*********************************************************
    //  CLASS DECLARATION
    //*********************************************************
    #include “Card.h”
    class Deck
    {
    //*****************************************************
    // Public Members         
    //*****************************************************
    public: 
        // Exception classes
        class DeckEmpty {};
    
        // Constructors/Destructors
        Deck(); // creates the cards and sorts them
       ~Deck(); // frees all the cards
    
        // Methods
        //****************************************************
        // dealCard
        //
        // return the next available card in the shuffled deck
        //****************************************************
        Card      dealCard();
    
        //****************************************************
        // shuffle
        //
        // shuffle the cards
        //****************************************************
        Void      shuffle();      // shuffle the deck
    
    
        //****************************************************
        // getCardCount
        //
        // return the number of unused cards in the shuffled 
        //     deck
        //****************************************************
           int       getCardCount(); // how many cards left
    
        //****************************************************
        // toString
        //
        // return a newline (\n) delimited list of the shuffled 
        //    cards 
        //*****************************************************
        string    toString();
    
    //*****************************************************
    // Private Members    
    //*****************************************************
    private:
        // array to hold unshuffled cards
           Card      cards[DECK_SIZE];
    
        // array to hold shuffled cards
        Card*     shuffledCards[DECK_SIZE];
    
        // index of next card to deal from shuffled cards
           int       nextCardIndex;    
    };
    

2 个答案:

答案 0 :(得分:2)

  

我的教授将这个作业分配给我们,但是我不知道如何做第一步。我不是要求任何人做作业,只是请某人帮我解决第一个问题

     
      
  1. 动态创建套牌
  2.   

这就是答案:

Deck* obj = new Deck();

上面你可以看到的是新表达。 http://en.cppreference.com/w/cpp/language/new 使用此表达式可以动态创建新对象。

答案 1 :(得分:1)

这对我来说也没有意义。特别是关于混洗卡的并行阵列的位不清楚。并且它需要析构函数的声明,因为它创建了Card对象,这是不正确的。也许他的意思是它动态创建了Card对象,但首先不是他所说的,其次我没有看到需要。我想你应该和你的教授谈谈。

然而,第一步非常简单。

“1。动态创建一个Deck'

Deck *my_deck = new Deck;

解决。

为什么你必须动态创建一个套牌是另一个问题,但这就是他要求你做的事情。

我不确定你的教授知道他在说什么。