Reference no: EM135326
Objectives:
1. To practice defining classes using separate compilation.
2. To practice using classes, vectors, and pointers.
3. To gain experience using dynamic memory.
Scenario: The owners of the most popular Las Vegas casinos were so impressed with your UCLA promotional interactive animated cartoon that they want to hire you to design a bunch of new electronic card games using C++. Your first task in this project is to help their coding team finish modeling a playing card and a deck of playing cards as C++ objects.
Directions:
Create a Win 32 Console Application project called "Hw8" in your solution called "Homework" using Microsoft Visual Studio.
1. You are to implement the following Card class.
enum Suit {HEARTS, CLUBS, SPADES, DIAMONDS};
enum Rank {ACE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING};
class Card{
public:
Card(Rank r, Suit s);
Rank getRank()const;
Suit getSuit()const;
string toString()const;
private:
Suit suit;
Rank rank;
};
First place the code above in a header file Card.h and make sure it has include guards. Then define the Card member functions in the implementation file Card.cpp. I provided the definition of Card's toString() member function below to help get you started:
string Card::toString()const{
string description = "";
switch(rank) {
case ACE:
description += "Ace";
break;
case TWO:
description += "Two";
break;
case THREE:
description += "Three";
break;
case FOUR:
description += "Four";
break;
case FIVE:
description += "Five";
break;
case SIX:
description += "Six";
break;
case SEVEN:
description += "Seven";
break;
case EIGHT:
description += "Eight";
break;
case NINE:
description += "Nine";
break;
case TEN:
description += "Ten";
break;
case JACK:
description += "Jack";
break;
case QUEEN:
description += "Queen";
break;
case KING:
description += "King";
break;
}
description += " of ";
switch(suit) {
case HEARTS:
description += "Hearts";
break;
case CLUBS:
description += "Clubs";
break;
case SPADES:
description += "Spades";
break;
case DIAMONDS:
description += "Diamonds";
break;
}
return description;
}
Be sure to define the other Card member functions in the implementation file also.
2. You are to implement the following class CardDeck which models a standard deck of 52 playing cards:
class CardDeck {
public:
CardDeck(); // default constructor
~CardDeck(); // destructor
/* Returns the Card pointer at the back of the vector or NULL if the deck is empty. */
Card* getTopCard();
/* Prints each card, one per line, using the Card's toString() member function.
*/
void print()const;
/* Shuffles the deck of cards by swapping two random elements of the deck. */
void shuffle();
private:
vector<Card*> deck;
/* Swaps the contents of the elements of deck at the given
indices. */
void swapCards(int index1, int index2);
};
Be sure to put the code above in a header file called CardDeck.h with include guards and the appropriate include statements. The definitions of the CardDeck class member functions should go in the implementation file CardDeck.cpp Make sure the implementation file includes the CardDeck header file.