Joseph C.

asked • 11/03/22

In python Coding

Complete the function game, which simulates a simple, turn-based game between two players and returns the winner (if there is one).

The function takes four arguments:

m1 and m2 are strings representing the moves for players 1 and 2, respectively.

h1 and h2 are numbers that represent the starting health of players 1 and 2, respectively.

Each character in a player's string represents a different action (Attack, Defend or Shield). Player actions and their respective character codes are described bellow:

Character CodeAction

A

Attack

D

Defend

B

Block with Shield

Taking Turns

Each player can make one move per round. The players continue to move until they run out of moves or one (or both) players are knocked out. How much damage each player takes per round depends on the actions of the players:

If both players choose to Defend or Block (in any combination), neither player takes any damage.

If both players Attack, both players take 3 points of damage.

If a player is Defending and their opponent Attacks, the Defender takes 2 points of damage.

If a player Blocks (with the shield) and their opponent Attacks, the Blocker takes 1 point of damage.

Return Value

The game ends when one player is knocked out (health becomes ≤ 0), both players are knocked out, or both players run out of moves.

If Player 1 is not knocked out, but Player 2 is knocked out, the function returns P1, followed by the hit points of each player. (e.g., P1, 5, 0)

If Player 2 is not knocked out, but Player 1 is knocked out, the function returns P2, followed by the hit points of each player. (e.g., P2, -1, 8)

If the game ends before either player is knocked out, or if both players are knocked out, the function returns Tie, followed by the remaining hit points of each player. (e.g., Tie, 3, 8 or Tie, -1, 0)

If the players don't have the same number of moves in their respective strings, return Error.

Assumptions

You may assume that the strings m1 and m2 only contain characters corresponding to valid actions.

Examples:

Function CallReturn Value

game('DBDDD', 'DBDBD', 2, 5)

('Tie', 2, 5)

game('DBD', 'ABDB', 3, 3)

Error

game('DABDA', 'AABDA', 6, 7)

('P2', -2, 1)

game('AAAADD', 'DDAABA', 9, 9)

('P1', 3, -1)

game('AAAADD', 'DDAABA', 19, 23)

('Tie', 11, 13)

game('ADAABADA', 'DAADADAA', 5, 5)

('Tie', 0, 0)

game('AADAABADA', 'ADAADADAA', 6, 6)

('Tie', -2, -2)

game('ABDAAADBBDAABDAB', 'ABDBADBAAAAAAADA', 18, 22)

('P2', -1, 7)

game('DDBBDAAADBDBD', 'AAAAAAAADAAAA', 17, 12)

('P2', 0, 3)

game('DBADABAABAABADABA', 'ABDADBDBADABDADAB', 15, 9)

('P1', 10, 0)

game('DBADADDDDDDBADABA', 'ABDADBDBAAAAAAAAB', 15, 9)

('P2', -1, 2)


1 Expert Answer

By:

Joshua H. answered • 12/03/22

Tutor
New to Wyzant

Experienced Programming Tutor

Still looking for help? Get the right answer, fast.

Ask a question for free

Get a free answer to a quick problem.
Most questions answered within 4 hours.

OR

Find an Online Tutor Now

Choose an expert and meet online. No packages or subscriptions, pay only for the time you need.