68 lines
1.8 KiB
Python
68 lines
1.8 KiB
Python
from random import randint
|
|
|
|
|
|
class Warrior:
|
|
def __init__(self):
|
|
self.name = None
|
|
self.hp = 100
|
|
self.damage = 10
|
|
self.defense = 10
|
|
self.ultimate = False
|
|
|
|
def info(self):
|
|
print('___________________')
|
|
print('Name: {}'.format(self.name))
|
|
print('HP: {}'.format(self.hp))
|
|
print('___________________')
|
|
|
|
def attack(self, enemy):
|
|
self.damage = randint(5, 50)
|
|
if self.damage >= 50 and not self.ultimate:
|
|
self.ultimate = True
|
|
enemy.hp -= self.damage
|
|
enemy.hp = max(0, enemy.hp)
|
|
print(f"{self.name} uses an ULTIMATE attack! Hit -{self.damage}. {enemy.name}'s HP: {enemy.hp}")
|
|
elif self.damage <= 30:
|
|
if self.damage > enemy.defense:
|
|
enemy.hp -= self.damage
|
|
enemy.hp = max(0, enemy.hp)
|
|
print(f"{self.name} attacks! Hit -{self.damage}. {enemy.name}'s HP: {enemy.hp}")
|
|
else:
|
|
print(f"{enemy.name} is parrying {self.name}'s attack!")
|
|
if enemy.hp <= 0:
|
|
print(f"\n{enemy.name} is defeated!")
|
|
|
|
|
|
class Swordsman(Warrior):
|
|
def __init__(self, name):
|
|
super().__init__()
|
|
self.name = name
|
|
self.hp = 100
|
|
self.damage = 0
|
|
self.defense = 20
|
|
self.ultimate = False
|
|
|
|
|
|
class Dragon(Warrior):
|
|
def __init__(self, name):
|
|
super().__init__()
|
|
self.name = name
|
|
self.hp = 200
|
|
self.damage = 0
|
|
self.defense = 0
|
|
self.ultimate = False
|
|
|
|
|
|
hero = Swordsman('Hero')
|
|
dragon = Dragon('Dragon')
|
|
|
|
while hero.hp > 0 and dragon.hp > 0:
|
|
|
|
attacker, defender = (hero, dragon) if randint(0, 1) == 1 else (dragon, hero)
|
|
attacker.attack(defender)
|
|
|
|
if defender.hp <= 0:
|
|
print(f"\n{attacker.name} is the winner!")
|
|
hero.info()
|
|
dragon.info()
|
|
break |