[SOLVED] INST326-Exercise-Marathon-main

30.00 $

Category:

Description

5/5 - (2 votes)

# Background
For  this  exercise  we  are  going  to  create  a  simple  game.  This  game  will  have  players  that  will  race against each other.However, in order to make this game more interesting, we will create two kinds of players which will both move differently based on the functionality of its class.

# Instructions
– Write a script called **players.py**. This script should contain the following:
– Write a class called **Player**
– Write  an  **__init__()**  method.  This  method  should  have  two  parameters,  self  and  name. This method should to the following:
– Create **name** and a position attributes. Position will be represented by a number. The position represents how many miles they are along a trail
– Write  a  **RedPlayer**  class  and  a  **BluePlayer**  class.  Both  of  these  classes  should  be  subclasses of Player. These classes should do the following:
– Write  a  walk  method  that  will  change  the  position  attribute  by  a  certain  amount  given the subclass.
– When a **RedPlayer** walks,  they  should  move  forward  between  1  and  10  steps.  A **BluePlayer** should move forward between 4 and 8 steps. The actual number of steps should  be  randomly  generated  within  the  given  range.  (hint.  You  want  to  use  the random library which contains a randrange function. This function generates random numbers based on a the range that you define)
– Write a **play_game** function. This function should not have any parameters but it should do the following:
– It  should  create  a  list  that  will  contain  3  instances  of  **BluePlayer**  and  3  instances  of **RedPlayer**.  This  function  should  not  use  inputs  to  assign  names,  instead,  it  should dynamically create names while it creates instances.
– Ex. BluePlayer1, BluePlayer2, etc.
– Hint: Use a while loop to handle this kind of problem.
– Iterate over the list, for each instance in the list invoke the walk method. This will cause the player to walk a certain amount of steps. Count how many times you iterate over the whole list.
– Check  the  **position**  of  the  instance  and  if  the  **position**  is  over  100  on  any  player  return the  **name**  of  the  instance  and  the  amount  of  times  that  you  iterated  over  the  list  as  a tuple.
– Write docstrings for each method. (**__init__()** doesn’t need a docstring.)
– Make an **if __name__ == “__main__”:** statement in which you call the play_game() function.
– Unpack the returned value into two variables and print them both for the user to see the winner and how many turns it took for the game to finish.

– Write a script called **marathon.py**. This script should contain the following:
– import **players.py**
– Re-write the **play_game** function. The difference here is that that instead of checking if the position  of  any  instance  is  over  100,  we  will  check  if  the  position  of  any  instance  is  over 1000.
– Make an **if __name__ == “__main__”:** statement in which:
– You call the **play_game()** function that is in this script and print the result.
– You  call  the  **play_game()**  function  that  is  in  the  namespace  of  the  module  that  you imported (**players.py**) and print the result.

# Note
Run the marathon script multiple times. Observe who the winners are when you run the simulation multiple times under the different conditions (pos >= 100 vs pos >= 1000)