Предмет: Информатика, автор: boxroadsmall

Створити текстову гру РПГ на пайтон про рицаря та дракона на пайтон.
У грі має бути характеристика персонажа.
По дорозі до дракона зустрічаються розбійники при вбивстві їх характеристика персонажа покращується.

Ответы

Автор ответа: badguy200677
1

Відповідь:

Пояснення:

Для початку гри потрібно визначитися з характеристиками головного героя:

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}")


boxroadsmall: Все працює тільки не міг би ти ще додати частину з битвою з драконом?
badguy200677: import random

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)
badguy200677: def is_alive(self):
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)
badguy200677: def is_alive(self):
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
badguy200677: def fight_knight_vs_bandit(knight, bandit):
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
badguy200677: def battle_knight_vs_dragon(knight, dragon):
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
badguy200677: def main():
knight_name = input("Введіть ім'я рицаря: ")
knight = Knight(knight_name)
bandit_count = 0
while bandit_count < 5:
if fight_knight_vs_bandit(knight, Bandit()):
bandit_count +=
Похожие вопросы