Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Do you think your code can defend mine? I don't think so solution in Clear category for The Defenders by Stensen
class Warrior:
def __init__(self): self.health = 50; self.attack = 5
@property
def is_alive(self): return self.health > 0
class Knight(Warrior):
def __init__(self): super().__init__(); self.attack = 7
def fight(self, enemy):
while self.is_alive and enemy.is_alive:
if type(enemy) == Defender:
if self.attack > enemy.defense: enemy.health -= self.attack - enemy.defense
else: enemy.health -= self.attack
if type(self) == Defender:
if enemy.attack > self.defense: self.health -= enemy.attack - self.defense
else: self.health -= enemy.attack if enemy.is_alive else 0
return self.is_alive
class Defender(Warrior):
def __init__(self):
self.health = 60
self.attack = 3
self.defense = 2
class Army:
def __init__(self): self.army = []
def add_units(self, unit, q): self.army += [unit() for _ in range(q)]
def __len__(self): return len(self.army)
class Battle:
@staticmethod
def fight(army1, army2):
assert type(army1) == Army; assert type(army2) == Army
while len(army1) > 0 and len(army2) > 0:
if fight(army1.army[0], army2.army[0]): army2.army.pop(0)
else: army1.army.pop(0)
return len(army1) > 0
Oct. 8, 2020
Comments: