Advertisement
Chl_Snt

№21. RPG: Улучшения

Jul 13th, 2023
900
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.33 KB | None | 0 0
  1. import random
  2. import time
  3.  
  4.  
  5. class Player:
  6.     def __init__(self, name, hp, damage):
  7.         self.name = name
  8.         self.hp = hp
  9.         self.damage = damage
  10.         self.xp = 0
  11.         self.lvl = 1
  12.         self.heals = 2
  13.  
  14.     def attack(self, victim):
  15.         victim.hp -= self.damage
  16.         print(f"Ты нанёс врагу {self.damage} ⚔️. Теперь у него {victim.hp} ❤️.")
  17.         if victim.hp <= 0:
  18.             print(f"{victim.name} повержен!")
  19.             self.xp += victim.xp
  20.             print(f"Ты получил {victim.xp} опыта! Теперь у тебя {self.lvl} LVL и {self.xp} XP.")
  21.             if self.xp >= 100:
  22.                 self.lvl += 1
  23.                 print(f"ПОЗДРАВЛЯЮ! Уровень повышен: {self.lvl}")
  24.                 self.xp = 0
  25.                 self.damage *= 1.5
  26.                 print(f"Ты стал сильнее! ⚔️: {self.damage}")
  27.  
  28.             luck = random.randint(0, 1)
  29.             if luck == 1:
  30.                 self.heals += 1
  31.                 print(f"Ты получил Лечебный отвар🧋! Теперь у тебя их {self.heals} ед.")
  32.             return False
  33.         else:
  34.             return True
  35.  
  36.  
  37. class Enemy:
  38.     races = {
  39.         "Слизняк": (10, 10),
  40.         "Волк": (25, 20),
  41.         "Орк": (50, 45),
  42.         "Группа гоблинов": (120, 25),
  43.         "Оборотень": (150, 50)
  44.     }
  45.  
  46.     def __init__(self):
  47.         self.name = random.choice(list(self.races.keys()))
  48.         self.hp = self.races[self.name][0]
  49.         self.damage = self.races[self.name][1]
  50.         self.xp = self.hp * 1.5
  51.  
  52.     def attack(self, victim):
  53.         victim.hp -= self.damage
  54.         print(f"{self.name} нанёс тебе {self.damage} ⚔️. Теперь у тебя {victim.hp} ❤️.")
  55.         if victim.hp <= 0:
  56.             exit(print("ПОТРАЧЕНО!"))
  57.         else:
  58.             return True
  59.  
  60.  
  61. def create_hero(name, race, prof):
  62.     hp = 100
  63.     dmg = 25
  64.     hp *= races[race][0]
  65.     hp *= profs[prof][0]
  66.     dmg *= races[race][1]
  67.     dmg *= profs[prof][1]
  68.     hero = Player(name, hp, dmg)
  69.     return hero
  70.  
  71.  
  72. def start(heal=None):
  73.     if heal is None:
  74.         enemy = Enemy()
  75.     else:
  76.         enemy = heal
  77.     print(f"Тебе встретился {enemy.name}. ❤️: {enemy.hp}, ⚔️: {enemy.damage}")
  78.     print("Нападать?")
  79.     answer = input("Да/Нет/Лечиться: ").lower()
  80.     if answer == "да":
  81.         fight(enemy)
  82.     elif answer == "лечиться":
  83.         if hero.heals > 0:
  84.             hero.hp += 50
  85.             hero.heals -= 1
  86.             print(f"Ты выпил Лечебный отвар🧋. ❤️: {hero.hp}")
  87.         else:
  88.             print("У тебя нет больше отвара.")
  89.         start(enemy)
  90.     else:
  91.         luck = random.randint(1, 100)
  92.         if luck in range(40):
  93.             print("Ты смог незаметно ускользнуть и пойти дальше!")
  94.             time.sleep(2)
  95.             start()
  96.         else:
  97.             print("Ты НЕ смог незаметно ускользнуть!")
  98.             time.sleep(2)
  99.             enemy.attack(hero)
  100.             fight(enemy)
  101.  
  102.  
  103. def fight(victim):
  104.     result = hero.attack(victim)
  105.     time.sleep(1)
  106.     if result:
  107.         victim.attack(hero)
  108.         time.sleep(1)
  109.         fight(victim)
  110.     else:
  111.         start()
  112.  
  113.  
  114. name = input("Введи своё имя: ")
  115.  
  116. races = {
  117.     "эльф": (1.5, 1),
  118.     "гном": (0.8, 1.2),
  119.     "человек": (1, 1)
  120. }
  121.  
  122. profs = {
  123.     "лучник": (0.9, 2),
  124.     "щитоносец": (2, 0.6),
  125.     "рыцарь": (1.2, 1.2)
  126. }
  127.  
  128. race = ""
  129. prof = ""
  130. while race not in tuple(races.keys()):
  131.     print(f"Выбери расу: {tuple(races.keys())}")
  132.     race = input("-> ").lower()
  133.  
  134. while prof not in tuple(profs.keys()):
  135.     print(f"Выбери профессию: {tuple(profs.keys())}")
  136.     prof = input("-> ").lower()
  137.  
  138. hero = create_hero(name, race, prof)
  139. print(f"Здравствуй, герой с именем {hero.name}!\n"
  140.       f"Твоё здоровье равно {hero.hp} ХП.\n"
  141.       f"Твой урон равен {hero.damage} единицам.\n"
  142.       f"Желаю удачи в приключениях, странник! ^_+")
  143. time.sleep(1)
  144. start()
  145.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement