CSCI 261 - Programming Concepts (C++)Spring 2018 - Assignment 5 - War!Quick Links: Canvas | CS @ Mines | Cloud9 | Piazza | zyBooks |
|||||||||||||||
| Home | Contact | Syllabus | Assignments | Schedule | Resources | | |||||||||||||||
This assignment is due
by Thursday, March 15, 2018 11:59 PM.
In this homework, we will combine everything we've
learned so far with a focus on
vector , struct and string .OverviewFor this assignment, your job is to create a
simple War game simulation.
The SpecificsYou must first create a
struct
named Card to represent a playing card. It must have two
attributes, a rank stored as an int and a suit
stored as a string . Since this struct definition will be used in
multiple files, you probably would want to create this in its own header file and
then include this header in any other file that requires the use of the Card struct.Before the gameplay portion of your program starts, create a vector
of Cards called deck. This vector will hold the current cards to be drawn from. Populate the vector with all 52 card
values (Ace of Hearts through King of Spades).
Create a function called
printCard() that takes a Card
parameter as input and has no output. The
function must print "Ace", "Jack", "Queen", or "King" in place of 1, 11, 12, and 13 respectively. The function must
print 2-10 for all other respective values.At this point, print all cards in your
vector to ensure you have all 52 cards represented. Once you are satisfied
all 52 cards are there, comment out these print statements.
Now, for the most important part, create
a function called
shuffleDeck that takes a vector of Cards
as input. This function randomly selects two
cards from the deck and swaps them. This operation must be performed
enough times to ensure the entire deck is thoroughly shuffled. To verify
the cards have been shuffled, again print all cards in your array. If
you are happy with the randomness of the card order, comment out these print statements as well.Next, create a function called
dealNextCard that takes the
vector of cards passed by reference as input. The function must return a Card as output. The function must return the
card at the back of the deck (i.e., the "top" card in the deck).
The function then also needs to remove the last Card from the deck; that is, since
we've now "dealt" this card, we don't want to deal it again! Hmm, why
do we pass the deck parameter by reference to this function then?To test our dealing function, create a loop that deals each card and then prints
the size of the remaining deck. When you reach the end of the deck and all cards have successfully been dealt once,
you can comment out these print statements and continue on.
Once the cards are shuffled and you can deal cards, create two new vectors called
player and computer. Deal the deck into the player and computer vectors so that each holds 26 cards.
At this point, everything is in place to
start our game. Follow this pseudocode to complete the remainder of the assignment:
It looks like a lot of steps, but the
majority of those steps are describing the rules of War! Once
completed, hopefully you find this assignment enjoyable to play and try
to beat the computer. Sample output and program flow should be as follows:
War! What is it good for, absolutely nothin. Computer shows 5 of Spades Player shows 8 of Diamonds Player wins! Do you want to "Play Again" or "Quit"? > Play Again Computer shows Jack of Hearts Players shows Queen of Hearts Player wins! Do you want to "Play Again" or "Quit"? > Play Again Computer shows Ace of Diamonds Player shows Ace of Hearts War!!!!! Computer deals 1, 2, 3... Player deals 1, 2, 3... Computer shows 7 of Clubs Player shows 3 of Hearts Computer wins! Do you want to "Play Again" or "Quit"? > Quit Computer has 29 cards Player has 23 cards Computer wins!! One issue you may have pondered ... what happens if you play
many rounds and the deck runs out of cards? Well, when the player or computer wins a hand we
need to insert the cards into the vector. Think about which end of the vector we are
dealing from. Where should we then insert cards to correspond to the bottom of the deck?
Also note that you now have the starting point to create any card based
game (blackjack, poker, go fish, etc.). Hmmm ... could be useful for your final project?
Functional Requirements
Hints
| |||||||||||||||
Last Updated: 03/01/18 21:52
|