2

私の教授は私たちにこの宿題を出しましたが、最初のステップのやり方がわかりません。誰にも宿題をするように頼んでいるわけではありません。最初の質問で誰か助けてください。

  1. 動的にデッキを作成する

この質問は、2 つのファイル (彼が提供したもの) に基づいています。

「カード.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; 
};

2 番目のクラスは Deck クラスです。このクラスは、標準のポーカー デッキの 52 枚のカードを表します。内部的には、デッキ内のカードは Card オブジェクトの配列で維持する必要があります。また、各シャッフル後のカードの順序を格納できるカード ポインターの並列配列も必要です。

Deck オブジェクトが作成されると、52 枚のカードが作成され、シャッフルされます。デッキが再シャッフルされる前にカードがなくなった場合、dealCard() メソッドは DeckEmpty Exception をスローする必要があります。

このクラスはカード オブジェクトを作成するため、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;    
};
4

2 に答える 2

2

私の教授は私たちにこの宿題を出しましたが、最初のステップのやり方がわかりません。誰にも宿題をするように頼んでいるわけではありません。最初の質問で誰か助けてください。

  1. 動的にデッキを作成する

これが答えです:

Deck* obj = new Deck();

上に見えるのは新しい表現です。http://en.cppreference.com/w/cpp/language/new この式を使用すると、新しいオブジェクトが動的に作成されます。

于 2012-10-26T21:39:16.510 に答える
1

それは私にとっても本当に意味がありません。特に、シャッフルされたカードの並列配列に関するビットは不明です。また、Card オブジェクトを作成するためにデストラクタが必要であるという記述は、正しくありません。おそらく彼は Card オブジェクトを動的に作成することを意味しているのでしょうが、第一に彼が言ったことではなく、第二にその必要性がわかりません。教授と話し合うべきだと思います。

ただし、最初のステップは非常に簡単です。

'1. 動的にデッキを作成する'

Deck *my_deck = new Deck;

解決しました。

なぜ動的にデッキを作成しなければならないのかは別の質問ですが、それは彼があなたに求めたものです。

あなたの教授が何について話しているのか、私にはまったくわかりません。

于 2012-10-26T21:40:51.077 に答える