Untitled
Anonymous
python
02/20/2026 5:38 PM
5.1 KB
22
Indexable
from random import *
class Character():
def __init__(self, name, health, armor, power, new):
self.name = name
self.health = health
self.armor = armor
self.power = power
self.new = True
def print_info(self):
print(self.name, "-> Health:", self.health, "| Armor:", self.armor, "| Power:", self.power)
def check_alive(self):
return self.health > 0
def strike(self, enemy):
enemy.armor -= self.power
if enemy.armor < 0:
enemy.health += enemy.armor
enemy.armor = 0
class Warrior(Character):
def hello(self):
if self.new:
print("-> A bandit warrior", self.name, "steps out from behind the trees!")
self.new = False
else:
print(self.name, "returns to fight!")
def attack(self, enemy):
print(self.name, "attacks", enemy.name)
self.strike(enemy)
class Dragon(Character):
def hello(self):
print("š„ FINAL BOSS! The mighty dragon", self.name, "descends from the sky!")
def attack(self, enemy):
print(self.name, "breathes fire at", enemy.name)
self.strike(enemy)
class Knight(Character):
def __init__(self, name, health, armor, power):
super().__init__(name, health, armor, power)
self.base_health = health
self.base_armor = armor
self.base_power = power
self.level = 1
def attack(self, enemy):
print(self.name, "swings his sword at", enemy.name)
self.strike(enemy)
def level_up(self):
self.level += 1
print("\nāØ", self.name, "reaches Level", self.level)
# Increase BASE stats randomly
self.base_health += randint(10, 20)
self.base_armor += randint(10, 25)
self.base_power += randint(5, 20)
# Reset current stats to upgraded base stats
self.health = self.base_health
self.armor = self.base_armor
self.power = self.base_power
print("Stats increased from original values!")
self.print_info()
print("")
# Create knight
knight = Knight('Richard', 60, 40, 20)
print("Hail, brave knight", knight.name)
print("Your journey through the dark forest begins...\n")
# Ordered journey enemies
enemies = [
Warrior('Peter', 30, 10, 10),
Warrior('Sergio', 40, 15, 15),
Warrior('Bjorn', 50, 20, 20),
Dragon('Drogon', 120, 110, 40) # Final boss
]
# Journey loop
for enemy in enemies:
print("\n==============================")
enemy.hello()
enemy.print_info()
print("==============================\n")
while enemy.check_alive() and knight.check_alive():
input("Press Enter to continue the fight...")
# Randomly decide who attacks first
if randint(0, 1) == 0:
first = knight
second = enemy
else:
first = enemy
second = knight
# First attack
first.attack(second)
second.print_info()
# If second survives, they counterattack
if second.check_alive():
second.attack(first)
first.print_info()
# If knight died
if not knight.check_alive():
print("\nš The brave knight", knight.name, "has fallen...")
break
# If enemy defeated
print("\nš", enemy.name, "has been defeated!")
# Level up if not final boss
if not isinstance(enemy, Dragon):
knight.level_up()
# Game ending
if knight.check_alive() and isinstance(enemy, Dragon) and not enemy.check_alive():
print("\nš The dragon has fallen!")
print("š The forest is safe once more!")
print("š", knight.name, "is a true legend!")
print("\n=== End of the Journey ===")
Editor is loading...
Leave a Comment