Draw: loops through the list of cards drawing them in a single row starting from the screen position referred to by the 'x' and 'y' fields of the Hand class. You can limit the number of simultaneously displayed cards to 10.
Review the definition of the Deck class. Note that the deck is modeled as an array 'cards' of size 52 (the number of cards in a single deck) initialized with the cards for all possible combinations of the card's rank and suit. Implement the following method of the Deck class:
Shuffle: produce a random permutation of the cards in the 'cards' array. Use the random
number generator accessible through the 'rng' field of the Deck class. Note that the most efficient implementation of the Shuffle method will traverse the array only once, and use constant memory. Think of how you can do this, but do not obsess with it. We are not going to deduct points for less efficient implementations!
Finally, implement the game logic by filling out the content of the if-else statements in the Update method of the BlackJack class. The template assumes that the game logic is modeled as the state diagram below. You are welcome to implement a different state diagram as long as the game logic detailed above stays the same.
You will need to think what logic should execute within each state, and in response to the buttons being pressed. Use the 'Pressed' attribute of the Button class to check the status of an instance of the button (pressed or not). For example, hitButton.Pressed will return true if and only if the "Hit" button has been pressed.
The game logic must support a simple scoring system in which the player is awarded 1 point for each game being won, and deducted 1 point for each game being lost. For example, the score of -1 may result from the player winning 5 and loosing 6 games respectively.