more from phone
This commit is contained in:
102
main.py
102
main.py
@ -1,5 +1,6 @@
|
|||||||
from enum import Enum
|
from enum import Enum
|
||||||
from random import randrange
|
from random import randrange
|
||||||
|
from time import sleep
|
||||||
|
|
||||||
class Stats(Enum):
|
class Stats(Enum):
|
||||||
SPD = "SPEED"
|
SPD = "SPEED"
|
||||||
@ -25,6 +26,19 @@ class Player():
|
|||||||
self.skill = skill
|
self.skill = skill
|
||||||
self.SP = 0
|
self.SP = 0
|
||||||
|
|
||||||
|
def roll(self, stat, skill = None):
|
||||||
|
rolled = roll(0)
|
||||||
|
if stat == Stats.SPD:
|
||||||
|
rolled += self.SPD
|
||||||
|
elif stat == Stats.HND:
|
||||||
|
rolled += self.HND
|
||||||
|
elif stat == Stats.BRK:
|
||||||
|
rolled += self.BRK
|
||||||
|
|
||||||
|
if skill == self.skill:
|
||||||
|
rolled += 1
|
||||||
|
return rolled
|
||||||
|
|
||||||
def info(self):
|
def info(self):
|
||||||
print(f"{self.name}:")
|
print(f"{self.name}:")
|
||||||
print(f"\tSPD: {self.SPD}")
|
print(f"\tSPD: {self.SPD}")
|
||||||
@ -33,13 +47,99 @@ class Player():
|
|||||||
print(f"\tSkill: {self.skill.value}")
|
print(f"\tSkill: {self.skill.value}")
|
||||||
print(f"\tSkill Points: {self.SP}")
|
print(f"\tSkill Points: {self.SP}")
|
||||||
|
|
||||||
|
class Obstacle():
|
||||||
|
def __init__(self, name, stat, skill):
|
||||||
|
self.name = name
|
||||||
|
self.stat = stat
|
||||||
|
self.skill = skill
|
||||||
|
|
||||||
|
def info(self):
|
||||||
|
print(f"{self.name}")
|
||||||
|
print(f"\tStat: {self.stat.value}")
|
||||||
|
print(f"\tSkill: {self.skill.value}")
|
||||||
|
|
||||||
class Track():
|
class Track():
|
||||||
def __init__(self):
|
def __init__(self, name):
|
||||||
self.name = name
|
self.name = name
|
||||||
self.obstacles = []
|
self.obstacles = []
|
||||||
|
|
||||||
|
def add_obstacle(self, obstacle):
|
||||||
|
self.obstacles.append(obstacle)
|
||||||
|
|
||||||
|
def info(self):
|
||||||
|
print("---")
|
||||||
|
print(f"{self.name}")
|
||||||
|
for o in self.obstacles:
|
||||||
|
o.info()
|
||||||
|
print("---")
|
||||||
|
|
||||||
|
class Game():
|
||||||
|
def __init__(self, player1, player2, track):
|
||||||
|
self.p1 = player1
|
||||||
|
self.p2 = player2
|
||||||
|
self.track = track
|
||||||
|
self.laps = 0
|
||||||
|
self.current_lap = 1
|
||||||
|
self.round = 0
|
||||||
|
self.leader = None
|
||||||
|
self.lead = 0
|
||||||
|
|
||||||
|
def roll_laps(self):
|
||||||
|
self.laps = roll(-2)
|
||||||
|
|
||||||
|
def play_round(self):
|
||||||
|
print(f"Round {self.round} | Lap {self.current_lap}/{self.laps}")
|
||||||
|
if self.round == 0:
|
||||||
|
p1_roll = self.p1.roll(Stats.SPD)
|
||||||
|
p2_roll = self.p2.roll(Stats.SPD)
|
||||||
|
print("Green flag, the race has started")
|
||||||
|
if p1_roll > p2_roll:
|
||||||
|
print(f"{self.p1.name} gets a good start and takes the lead")
|
||||||
|
self.p1.SP += 1
|
||||||
|
self.leader = self.p1
|
||||||
|
self.lead += 1
|
||||||
|
elif p2_roll > p1_roll:
|
||||||
|
print(f"{self.p2.name} gets a good start and takes the lead")
|
||||||
|
self.p2.SP += 1
|
||||||
|
self.leader = self.p2
|
||||||
|
self.lead += 1
|
||||||
|
else:
|
||||||
|
print("Both drivers get a good start and they're neck and neck")
|
||||||
|
else:
|
||||||
|
obstacle_index = self.round % len(self.track.obstacles)
|
||||||
|
if obstacle_index == 0 and self.round != 0:
|
||||||
|
self.current_lap += 1
|
||||||
|
if self.current_lap == self.laps:
|
||||||
|
print("its over")
|
||||||
|
obstacle = self.track.obstacles[obstacle_index]
|
||||||
|
print(obstacle.name)
|
||||||
|
sleep(1)
|
||||||
|
self.round += 1
|
||||||
|
self.play_round()
|
||||||
|
|
||||||
player1 = Player("Player 1", 3, 2, 1, Skills.FM)
|
player1 = Player("Player 1", 3, 2, 1, Skills.FM)
|
||||||
player2 = Player("Player 2", 1, 3, 2, Skills.TM)
|
player2 = Player("Player 2", 1, 3, 2, Skills.TM)
|
||||||
|
|
||||||
|
track = Track("Track 1")
|
||||||
|
start_finish_straight = Obstacle("Start Finish Straight", Stats.SPD, Skills.FM)
|
||||||
|
turn1 = Obstacle("Turn 1", Stats.BRK, Skills.TM)
|
||||||
|
turn2 = Obstacle("Turn 2", Stats.HND, Skills.FM)
|
||||||
|
back_straight = Obstacle("Back Straight", Stats.BRK, Skills.TM)
|
||||||
|
turn3 = Obstacle("Turn 3", Stats.HND, Skills.TM)
|
||||||
|
turn4 = Obstacle("Turn 4", Stats.SPD, Skills.FM)
|
||||||
|
|
||||||
|
track.add_obstacle(start_finish_straight)
|
||||||
|
track.add_obstacle(turn1)
|
||||||
|
track.add_obstacle(turn2)
|
||||||
|
track.add_obstacle(back_straight)
|
||||||
|
track.add_obstacle(turn3)
|
||||||
|
track.add_obstacle(turn4)
|
||||||
|
|
||||||
|
|
||||||
player1.info()
|
player1.info()
|
||||||
player2.info()
|
player2.info()
|
||||||
|
track.info()
|
||||||
|
|
||||||
|
game = Game(player1, player2, track)
|
||||||
|
game.roll_laps()
|
||||||
|
game.play_round()
|
||||||
|
Reference in New Issue
Block a user