cant check were is a problem
From: https://py.checkio.org/mission/the-defenders/solve/
In 8 test is a fight with rookie and i dont know why, but my defender lose health after fight with him, i even cant check where is a problem coz i dont know what is rookie is, it try create my own rookie but it do nothing. Please help.
HTTP_USER_AGENT:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36
class Warrior:
damage=5
health=50
is_alive=True
def __init__(self):
self.damage=5
self.health=50
def damaged_on(self,enemy_damage):
self.health-=enemy_damage
if self.health<=0:
self.is_alive=False
class Rookie(Warrior):
def __init__(self):
self.damage=0
self.health=1
class Knight(Warrior):
def __init__(self):
self.damage=7
self.health=50
class Defender(Warrior):
def __init__(self):
self.damage=3
self.health=60
self.defense=2
def damaged_on(self,enemy_damage):
self.health-=(0,enemy_damage-self.defense)[enemy_damage and enemy_damage>self.defense]
print(self.health)
if self.health<=0:
self.is_alive=False
class Rookie(Warrior):
def __init__(self):
self.damage=0
class Army:
def __init__(self):
self.arrayWithUnits=[]
def add_units(self,type,count):
for i in range(count):
self.arrayWithUnits.append(type())
def pop(self):
if len(self.arrayWithUnits)>0:
return self.arrayWithUnits.pop()
else:
return False
class Battle:
def fight(self,army1,army2):
fighter1=army1.pop()
fighter2=army2.pop()
if not fighter2:
return True
if not fighter1:
return False
while True:
if(fight(fighter1,fighter2)):
fighter2=army2.pop()
if not fighter2:
return True
else:
fighter1=army1.pop()
if not fighter1:
return False
def round(f1,f2):
f2.damaged_on(f1.damage)
if f2.is_alive:
f1.damaged_on(f2.damage)
def fight(f1,f2):
while True:
if not f1.health:return False
if not f2.health:return True
round(f1,f2)
if not f2.is_alive:
return True
elif not f1.is_alive:
return False