Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

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

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 statement.

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: 2 Player 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)

image text in transcribed

blackjack.dice([5, 1, 6, 1, 1, 3, 3, 6, 5, 5, 1, 2, 2, 2, 6, 1,[1, 201 3, 2, 6, 2, 3, 6, 4, 2, 4, 2, 4, 2, 3, 6]) blackjack.dice ([3, 4, 2, 6, 4, 5, 6, 5, 6, 4, 5, 2, 5, 2, 5, 4, [2, 19] 5, 5, 4, 5, 4, 2, 3, 3, 5, 5, 1, 6, 4, 2]) blackjack.dice ([3, 3, 2, 6, 5, 2, 5, 1, 3, 1, 2, 5, 5, 4, 5, 4, [2, 21] blackjack.dice ([4, 3, 4, 3, 5, 6, 4, 3, 3, 2, 1, 4, 4, 3, 2, 6,[2, 19] blackjack.dice ([4, 3, 2, 3, 1,1, 1, 5, 4, 6, 3, 4, 4, 3, 2, 1,[1, 19] 6, 5, 2, 6, 6, 5, 5, 1, 5, 3, 5, 3, 4, 4]) blackjack.dice ([4, 1, 1, 4, 4, 3, 2, 5, 6, 3, 2, 3, 3, 1, 3, 3,[1, 21] 5, 3, 3, 1, 6, 5, 1, 4, 6, 2, 2, 4, 4, 3]) blackjack.dice ([4, 4, 6, 3, 4, 6, 1, 3, 3, 3, 1, 3, 1, 6, 1, 5,[2, 19] 5, 5, 6, 4, 4, 3, 5, 2, 2, 4, 3, 5, 2, 3]) blackjack.dice ([5, 4, 2, 6, 3,1, 1, 3, 5, 5, 3, 6, 2, 5, 2, 2, [2, 12] 2, 4, 4, 1, 4, 4, 5, 3, 1, 5, 5, 4, 5, 5]) blackjack.dice ([, 2, 4, 2, 2, 4, 6, 3, 4, 6, 2, 2, 5, 4, 3, 3,[0, 0 2, 1, 1, 3, 6, 3, 4, 6, 3, 5, 2, 2, 2, 2]) blackjack.dice ([3, 5, 1, 2, 6, 4, 4, 5, 1, 6, 4, 6, 2, 5, 5, 2, [2, 19] blackjack.dice ([5, 3, 5, 2, 5, 5, 4, 2, 6, 6, 3, 2, 4, 4, 3, 6,[1, 18] 5, 5, 2, 2, 1, 1, 4, 5, 5, 4, 4, 3, 4, 2]) blackjack.dice([, 1, 3, 1, 5, 1, 6, 4, 1, 6, 5, 1, 2, 6, 4, 2, [2, 20] 6, 5, 4, 6, 1, 5, 3, 4, 1, 3, 6, 3, 2, 3]) blackjack.dice ([4, 3, 2, 2, 3, 3, 4, 3, 6, 2, 5, 4, 3, 5, 5, 1,[1, 21] blackjack.dice ([3, 5, 4, 2, 3, 3, 5, 3, 4, 1, 5, 3, 5, 6, 2, 3,[1, 19] 3, 4, 5, 4, 2, 2, 3, 3, 1, 4, 1, 6, 2, 6]) blackjack.dice ([2, 5, 6, 4, 2, 1, 6, 5, 2, 4, 3, 5, 6, 4, 5, 1,[2, 21] 3, 3, 4, 3, 5, 3, 1, 4, 6, 4, 2, 1, 6, 2]) blackjack.dice([, 2, 6, 1, 2, 6, 5, 4, 6, 6, 6, 3, 5, 2, 1, 1,[2, 16] 3, 6, 4, 4, 4, 3, 5, 4, 3, 4, 4, 2, 1, 1]) blackjack.dice ([4, 5, 6, 5, 1, 2, 3, 2, 4, 1, 1, 1, 1, 1, 5, 6,[1, 17] 2, 2, 3, 5, 5, 6, 3, 1, 4, 6, 2, 3, 2, 3]) blackjack.dice([5, 1, 1, 4, 4, 1, 2, 5, 5, 1, 4, 4, 1, 3, 2, 1,[2, 20] 4, 4, 1, 5, 2, 3, 6, 5, 6, 3, 3, 6, 5, 2]) blackjack.dice ([, 5, 2, 3, 4, 6, 4, 6, 6, 6, 2, 5, 2, 5, 2, 6,[1, 16] blackjack.dice ([3, 3, 1, 5, 2, 6, 3, 5, 1, 3, 2, 2, 6, 2, 4, 4,[0, 0 6

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Joe Celkos Data And Databases Concepts In Practice

Authors: Joe Celko

1st Edition

1558604324, 978-1558604322

More Books

Students also viewed these Databases questions

Question

Define procedural justice. How does that relate to unions?

Answered: 1 week ago