Створити текстову гру РПГ на пайтон про рицаря та дракона на пайтон.
У грі має бути характеристика персонажа.
По дорозі до дракона зустрічаються розбійники при вбивстві їх характеристика персонажа покращується.
Ответы
Відповідь:
Пояснення:
Для початку гри потрібно визначитися з характеристиками головного героя:
class Hero:
def __init__(self, name, health, strength, defense, experience):
self.name = name
self.health = health
self.strength = strength
self.defense = defense
self.experience = experience
hero = Hero("Рицар Ім'я", 100, 10, 5, 0)
У нашій грі герой має 4 характеристики:
Здоров'я - health (від 0 до 100)
Сила атаки - strength (від 0 до 10)
Захист - defense (від 0 до 10)
Досвід - experience (від 0 до 100)
Тепер давайте розробимо функцію для випадкових зустрічей з розбійниками:
import random
class Bandit:
def __init__(self, name, health, strength, defense, experience):
self.name = name
self.health = health
self.strength = strength
self.defense = defense
self.experience = experience
def fight(hero, bandit):
print(f"На дорозі ви зустрічаєте {bandit.name}!")
while hero.health > 0 and bandit.health > 0:
hero_damage = random.randint(1, hero.strength) - bandit.defense
if hero_damage < 0:
hero_damage = 0
bandit.health -= hero_damage
print(f"Ви атакуєте {bandit.name} і наносите {hero_damage} одиниць урону.")
if bandit.health <= 0:
break
bandit_damage = random.randint(1, bandit.strength) - hero.defense
if bandit_damage < 0:
bandit_damage = 0
hero.health -= bandit_damage
print(f"{bandit.name} атакує вас і наносить {bandit_damage} одиниць урону.")
if hero.health <= 0:
print("Ви програли! Ваш герой загинув...")
exit()
else:
hero.experience += bandit.experience
print(f"Ви перемогли {bandit.name} і отримали {bandit.experience} одиниць досвіду!")
print(f"Здоров'я: {hero.health}; Сила атаки: {hero.strength}; Захист: {hero.defense}; Досвід: {hero.experience}")
class Knight:
def __init__(self, name):
self.name = name
self.health = 100
self.strength = 10
self.defense = 5
self.gold = 0
def attack(self, enemy):
damage = random.randint(1, self.strength)
enemy.defend(damage)
def defend(self, damage):
blocked_damage = random.randint(1, self.defense)
self.health -= max(damage - blocked_damage, 0)
return self.health > 0
class Dragon:
def __init__(self, name):
self.name = name
self.health = 200
self.strength = 15
self.defense = 10
def attack(self, enemy):
damage = random.randint(1, self.strength)
enemy.defend(damage)
def defend(self, damage):
blocked_damage = random.randint(1, self.defense)
self.health -= max(damage - blocked_damage, 0)
return self.health > 0
class Bandit:
def __init__(self):
self.health = 50
self.strength = 5
self.defense = 2
self.gold = random.randint(1, 10)
def attack(self, enemy):
damage = random.randint(1, self.strength)
enemy.defend(damage)
def defend(self, damage):
blocked_damage = random.randint(1, self.defense)
self.health -= max(damage - blocked_damage, 0)
def is_alive(self):
return self.health > 0
print(f"{knight.name} зустрічає розбійника!")
while knight.is_alive() and bandit.is_alive():
knight.attack(bandit)
if bandit.is_alive():
bandit.attack(knight)
if not knight.is_alive():
print(f"{knight.name} програв битву!")
return False
print(f"{knight.name} переміг розбійника і заробив {bandit.gold} золота!")
knight.gold += bandit.gold
return True
print(f"{knight.name} дійшов до печери, де живе дракон {dragon.name}!")
while knight.is_alive() and dragon.is_alive():
knight.attack(dragon)
if dragon.is_alive():
dragon.attack(knight)
if not knight.is_alive():
print(f"{knight.name} програв битву з драконом {dragon.name}!")
return False
print(f"{knight.name} переміг дракона {dragon.name}!")
return True
knight_name = input("Введіть ім'я рицаря: ")
knight = Knight(knight_name)
bandit_count = 0
while bandit_count < 5:
if fight_knight_vs_bandit(knight, Bandit()):
bandit_count +=