Prepare a simple game of blackjack using object oriented programming.
UML Class Diagrams
![1029_Design a simple game of blackjack.png](https://www.mywordsolution.com/CMSImages/1029_Design%20a%20simple%20game%20of%20blackjack.png)
Your project must implement the following classes:
class BlackJack
The role of the Blackjack class is to encapsulate all of logic associated with playing the game of blackjack.
Note that all output visible in the Sample Output section is generated by BlackJack's play() method. The play() method should operate as follows:
Program Start
1. Output an introduction
Starting with the player, do the following
1. Deal the player a card.
2. Add the card's value to the player's total hand.
3. Output the value of the card just dealt and the player's current hand total (score)
4. Ask the player if he would like to hit or stand
5. If the player hits, go back to #1
After the player busts or stands
1. If the player has not busted, begin computer's play
2. Deal the computer a card
3. Add the value of the card to the computer's hand total (score)
4. If a card causes the computer to bust (go over 21), output a message. Go to step #7.
5. If the computer's hand total is less than 17, it must take another card (hit). Go to step #2.
6. If the computer's hand is 17 or more, the computer stands.
7. Stop computer playWhen both player and computer are done
1. If the player has not busted and the computer busted, the player wins
2. If the player has not busted, the computer has not busted, and the player's hand total is greater than the computer, then the player wins
3. If the player has not busted, the computer has not busted, and the player's hand total is less than the computer's then the computer wins
4. If the player has busted, then the computer wins.
class Card
We use the card class to represent an individual card in a deck. Cards have a suit (Club, Diamond, Heart, Spade) and a rank (e.g. Two, Ten, Jack, Ace). Suit_t and Rank_t are enumerations that list the possible values. To simplify, we will assume that aces only play one role in blackjack and have a value of 11. Note that the Card class has a getRankValue() method that will return the integer value of the card.
class Deck
The Deck class is merely a collection of 52 cards. The private member variable "_used_indices" is used to track the cards previously dealt. Calling the resetDeck() method should re-initialize the deck of cards and clear out the list of previously dealt cards. For convenience, the Deck's constructor should automatically call resetDeck() to initialize the deck.