Question
Part II: Blackjack Dice (20 points) For this part you will implement a two-player version of the card game Blackjack but with six-sided dice instead
Part II: Blackjack Dice (20 points) For this part you will implement a two-player version of the card game Blackjack but with six-sided dice instead of playing cards. The function blackjack dice() will simulate the game with no interaction from the user. The game rules are as follows: Players take turns rolling two six-sided dice, each accumulating a running total. We will see later how the rolling of dice will be simulated. If a players total is less than 16, the player must roll the dice and add the total to his score. If a players total is greater than or equal to 16, the player does not roll the dice. If a players total equals exactly 21, the game ends immediately with a win for that player. If a players total becomes greater than 21 (busting), the game ends immediately with a win for the other player. Thus, players continue rolling dice and accumulating totals while all of the following conditions are true: Neither player has reached 21 exactly. Neither player has busted (exceeded a total of 21). At least one player still has a score of less than 16. If the game ends with neither player hitting 21 or busting, then the player whose score is closest to 21 wins the game. In the event of a tie, the function returns the list [0, 0]. The function takes a single argument, dice, which is a list of 30 or so integers in the range 1 through 6, inclusive. Rolling of dice is simulated by the function by reading integers from this list two at a time. One way to keep track of which numbers the function should read next is to maintain an index variable (e.g., next die) that is updated as values are read out. This variable would be initialized to zero at the top of the function. As an example: die1 = dice[next_die] die2 = dice[next_die+1] next_die += 2 # update a players score using die1+die2 Once a game-ending condition has been reached, the function returns a list that contains two values: first, the number of the player who won (1 or 2) and second, the score of the winning player. A few runs of the game are given below with print statements that illustrate how the games proceed. Your solution should not contain print statements. However, while working on your solution you may find it helpful to include such print statements. Sample Game Run #1: Player 1 wins by earning a score closer to 21 than Player 2 Dice: [5, 1, 6, 1, 1, 3, 3, 6, 5, 5, 1, 2, 2, 2, 6, 1, 3, 2, 6, 2, 3, 6, 4, 2, 4, 2, 4, 2, 3, 6] Player 1s score: 0 Player 1 rolled: 5 1 Player 1s new score: 6 Player 2s score: 0 Player 2 rolled: 6 1 Player 2s new score: 7 Player 1s score: 6 Player 1 rolled: 1 3 Player 1s new score: 10 Player 2s score: 7 Player 2 rolled: 3 6 Player 2s new score: 16 Player 1s score: 10 Player 1 rolled: 5 5 Player 1s new score: 20 (Note: Player 2 does not roll again because his score is >= 16.) Return value: [1, 20] Sample Game Run #2: Player 1 wins by earning a score of exactly 21 Dice: [4, 1, 1, 4, 4, 3, 2, 5, 6, 3, 2, 3, 3, 1, 3, 3, 5, 3, 3, 1, 6, 5, 1, 4, 6, 2, 2, 4, 4, 3] Player 1s score: 0 Player 1 rolled: 4 1 Player 1s new score: 5 Player 2s score: 0 Player 2 rolled: 1 4 Player 2s new score: 5 Player 1s score: 5 Player 1 rolled: 4 3 Player 1s new score: 12 Player 2s score: 5 Player 2 rolled: 2 5 Player 2s new score: 12 Player 1s score: 12 Player 1 rolled: 6 3 Player 1s new score: 21 (Note: the game ends immediately. Player 2 does not get to roll again.) Return value: [1, 21] Sample Game Run #3: Player 2 wins because Player 1 busts Dice: [1, 1, 3, 1, 5, 1, 6, 4, 1, 6, 5, 1, 2, 6, 4, 2, 6, 5, 4, 6, 1, 5, 3, 4, 1, 3, 6, 3, 2, 3] Player 1s score: 0 Player 1 rolled: 1 1 Player 1s new score: 2 Player 2s score: 0 Player 2 rolled: 3 1 Player 2s new score: 4 Player 1s score: 2Player 1 rolled: 5 1 Player 1s new score: 8 Player 2s score: 4 Player 2 rolled: 6 4 Player 2s new score: 14 Player 1s score: 8 Player 1 rolled: 1 6 Player 1s new score: 15 Player 2s score: 14 Player 2 rolled: 5 1 Player 2s new score: 20 Player 1s score: 15 Player 1 rolled: 2 6 Player 1s new score: 23 (Note: the game ends immediately because Player 1 busted.) Return value: [2, 20] Some Hints: Here is a general outline of how you might want to structure the main part of your function: while at least one player needs to roll the dice again if Player 1s score is less than 16 then roll the dice add the sum of the dice to Player 1s score check for a win by Player 1 (return if Player 1 has won) check for a loss by Player 1 (return if Player 1 has lost) if Player 2s score is less than 16 then ...similar to the steps for Player 1... After the while-loop: compare the scores for the two players to determine the winner (and return the result)
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started