Hello,
I have problem with mission The Defenders.
On checks i have recived strange errors (see attached screen).
My Code:
class Army:
def __init__(self):
self.units = []
def add_units(self,unit,count):
self.units.extend([unit() for i in range(count)])
def unit_die(self):
self.units.remove(self.units[0])
def getUnit(self):
return self.units[0]
@property
def has_warriors(self):
return len(self.units) > 0
class Warrior:
def __init__(self, health=50, strange=5, defense=0):
self.health = health
self.strange = strange
self.defense = defense
def attack(self, opponent):
hit_points = self.strange - opponent.defense
if hit_points > 0:
opponent.health -= hit_points
@property
def is_alive(self):
return self.health > 0
class Knight(Warrior):
def __init__(self, health=50, strange=7, defense=0):
super().__init__(health, strange, defense)
class Defender(Warrior):
def __init__(self, health=60, strange=3, defense = 2):
super().__init__(health, strange, defense)
class Rookie(Warrior):
def __init__(self, health=50, strange=1, defense = 0):
super().__init__(health, strange, defense)
class Battle():
def fight(self,army_1: Army,army_2: Army):
while army_1.has_warriors and army_2.has_warriors:
if fight(army_1.getUnit(),army_2.getUnit()):
army_2.unit_die()
else:
army_1.unit_die()
return army_1.has_warriors
def fight(unit_1, unit_2):
while unit_1.is_alive and unit_2.is_alive:
unit_1.attack(unit_2)
if unit_2.is_alive:
unit_2.attack(unit_1)
else:
return True
return False
Created at: 2021/09/24 20:03; Updated at: 2021/09/26 11:43