In: Computer Science
Python
The goal of this assignment is to build a simulation of a
popular children’s dice game named Beat That. Beat That is an
educational game in which children learn strategic thinking and the
concept of place value. While the rules of the game can be
flexible, we will be playing a basic version in which 2 players
(Player A and Player B) are rolling 2 dice in a 5-round game.
Game play is based on rounds. In each round, players take a turn in
which they roll 2 dice. After rolling the dice, the player decides
how to use the two dice values to form a 2-digit number. The goal
is to arrange the digits so that they form the highest number
possible. Since you are developing your computer programming skills
rather than your number literacy skills, your program will
automatically make the choice for the player – choosing the highest
of the two possible combinations as the player’s number choice for
that round. In choosing for the player in this manner you are
simulating the play of expert player of Beat That rather than
simulating the play of a novice.
At the close of the round, your program will compare players’
number choices for that round to determine the round scoring. The
player with the highest number choice wins the round. There are 3
possible scoring outcomes of a round:
• The Players Tie this Round • Player A Wins this Round • Player B
Wins this Round
The program will print a message to announce the outcome of the
round.
The player who wins a round scores 1 point in the overall game. The
player who loses the round does not score a point in the overall
game. If the players are tied for the round, then
neither player scores a point in the overall game.
When 5 rounds have been played, the program will determine the
outcome of the overall game based upon points earned. There are 3
possible outcomes of a game:
• The Players Tie the Game • Player A Wins the Game • Player B Wins
the Game
The python program will print a message to announce the outcome of
the game. Based upon the description above, the program should
implement the functionality for playing a 5-round game of Beat
That.
When coding and testing this program, follow the approach that I
take in the second part of the tutorial video where I design and
build a program that simulates a multi-round Coin Toss game.
When this program is run, the console session should look like
this:
Playing round 1 of Beat That... Player A rolls (2, 1) Player A
chooses 21 Player B rolls (5, 2) Player B chooses 52 Player B Wins
This Round!
Playing round 2 of Beat That... Player A rolls (2, 2) Player A
chooses 22 Player B rolls (1, 5) Player B chooses 51 Player B Wins
This Round!
Playing round 3 of Beat That... Player A rolls (4, 2) Player A
chooses 42 Player B rolls (6, 1) Player B chooses 61 Player B Wins
This Round!
Playing round 4 of Beat That... Player A rolls (6, 4) Player A
chooses 64 Player B rolls (4, 2) Player B chooses 42 Player A Wins
This Round!
Playing round 5 of Beat That... Player A rolls (2, 5) Player A
chooses 52 Player B rolls (1, 5) Player B chooses 51 Player A Wins
This Round!
7
Game score: Player A has won 2 rounds. Player B has won 3 rounds.
Player B Wins This Game!
Before finishing your work . Please remember to apply refactoring
and retesting steps
from random import randint
def startGame(round,p1Name,p2Name,p1Wins,p2Wins):
print("\nPlaying round", round ,"of Beat That...")
print(p1Name,"rolls")
p1 = rollDice(p1Name)
print(p2Name,"rolls")
p2 = rollDice(p2Name)
if p1 > p2:
print(p1Name,"Wins this Round!")
p1Wins += 1
elif p2 > p1:
print(p2Name,"Wins this Round!")
p2Wins +=1
else:
print("The Players Tie this Round")
return p1Wins,p2Wins
def maxNumber(num):
a = []
for i in range(len(num)):
a.append(max(num))
num.remove(max(num))
maxNum = ''.join(map(str,a))
return maxNum
def getDiceRollValue(numOfDice):
num = []
for i in range(numOfDice):
a = randint(1, 6)
num.append(a)
return num
def rollDice(playerName):
rollValue = getDiceRollValue(numOfDice)
print(rollValue)
maxNumOutofRoll = maxNumber(rollValue)
print(playerName, "chooses",maxNumOutofRoll)
return maxNumOutofRoll
def winner(p1Name,p2Name,p1Wins,p2Wins):
print("Game Score:",p1Name,"has won",p1Wins,"rounds.",p2Name,"has
won",p2Wins,"rounds.")
if p1Wins > p2Wins:
print(p1Name,"Wins This Game!")
elif p2Wins > p1Wins:
print(p2Name,"Wins This Game!")
else:
print("The Players Tie the Game")
numOfDice = 2
numOfRounds = 5
p1Name = "Player 1"
p2Name = "Player 2"
p1Wins = 0
p2Wins = 0
for i in range(1,numOfRounds+1):
p1Wins,p2Wins = startGame(i,p1Name,p2Name,p1Wins,p2Wins)
winner(p1Name,p2Name,p1Wins,p2Wins)