CSCI 261 - Programming Concepts (C++)Fall 2017 - Assignment 5 - BlackjackQuick Links: Canvas | CS @ Mines | Cloud9 | Piazza | zyBooks |
|||||||||||||||
| Home | Contact | Syllabus | Assignments | Schedule | Resources | | |||||||||||||||
This assignment is due
by Tuesday, October 24, 2017 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 Blackjack game where a user plays against a computerized Dealer.
The SpecificsYou must first create a
struct
named Card to represent a playing card. It must have two
fields, 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 gameplay 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.
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 Blackjack. You will need to
find a way to keep track of the player's and dealer's totals as the game is progressing. Once
completed, hopefully you find this assignment enjoyable to play and try
to beat the computer. Sample output and program flow could be as follows:
Dealer shows the 3 of Clubs Dealer total is: 3 You were dealt the 3 of Spades You were dealt the 7 of Hearts Your total is: 10 Do you want to "Hit", "Stand"? > Hit You were dealt the 3 of Diamonds Your total is: 13 Do you want to "Hit", "Stand"? > Hit You were dealt the 6 of Spades Your total is: 19 Do you want to "Hit", "Stand"? > Stand Dealer was dealt the 6 of Diamonds Dealer total is: 9 Dealer was dealt the 6 of Hearts Dealer total is: 15 Dealer was dealt the 7 of Spades Dealer total is: 22 Dealer busted! You win Do you want to play again? "Yes" or "No"? > No One issue you may have pondered ... what happens if you play
several rounds and the deck runs out of
cards? There are issues with re-shuffling the deck since we are not tracking the
cards currently in play. Thus, instead, we sugget you add code
to re-shuffle the deck if the deck is
"low" on cards. Specifically, when a user requests another game of Blackjack,
re-shuffle the deck
if the size of our deck indicates there are less than
20 cards in the deck.
Also note that you now have the starting point to create any card based
game (war, poker, go fish, etc.). Hmmm ... could be useful for your final project?
Extra Credit!For the first extra credit part, allow
an Ace to count as 1 or 11. That is, if the user has an Ace and a Nine,
then his/her total would show as 20. If the user chooses to hit and is
dealt a 5, then his/her total would become 15. Implementing this correctly will earn you 4 extra points.
For the second extra credit part, if either
player is dealt a Blackjack (Ace + 10 or Face Card), then the hand must
instantly end. Implementing this correctly will earn you 2 extra credit points.
Functional Requirements
Hints
| |||||||||||||||
Last Updated: 10/10/17 22:15
|