Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
self-defended solution in Creative category for The Defenders by MrPod
class Warrior:
def __init__(self):
self.health = 50
self.attack = 5
self.defense = 0
@property
def is_alive(self):
return self.health > 0
class Knight(Warrior):
def __init__(self):
Warrior.__init__(self)
self.attack = 7
class Defender(Warrior):
def __init__(self):
Warrior.__init__(self)
self.attack = 3
self.defense = 2
self.health = 60
hp = lambda unit_1, unit_2: (lambda res: [0, res][res > 0])(unit_1.attack * unit_1.is_alive - unit_2.defense)
def fight(unit_1, unit_2):
while unit_1.is_alive and unit_2.is_alive:
unit_2.health -= hp(unit_1, unit_2)
unit_1.health -= hp(unit_2, unit_1)
return unit_1.is_alive
class Army:
def __init__(self):
self.army = []
def add_units(self, post, amount):
[self.army.append(post()) for i in range(amount)]
class Battle:
def fight(self, heroes, enemies):
i = j = 0
while any(hero.is_alive for hero in heroes.army) and any(enemy.is_alive for enemy in enemies.army):
enemies.army[j].health -= hp(heroes.army[i], enemies.army[j])
heroes.army[i].health -= hp(enemies.army[j], heroes.army[i])
if not heroes.army[i].is_alive:
i += 1
if not enemies.army[j].is_alive:
j += 1
return j == len(enemies.army)
Aug. 31, 2018
Comments: