Advertisement
Roman9234

Untitled

Mar 14th, 2024
519
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.58 KB | None | 0 0
  1. import random
  2. import time
  3.  
  4.  
  5. class Character:
  6.     def __init__(self, name: str, xray_name: str, punch_names: list):
  7.         self.stamina = random.randint(50, 200)
  8.         self.max_stamina = self.stamina
  9.         self.name = name
  10.         self.xray_name = xray_name
  11.         self.punch_names = punch_names
  12.         self.mana = 0
  13.    
  14.     def bonus_hit(self, attacked_char):
  15.         self.damage = random.randint(5, 15)
  16.         if self.stamina > 100:
  17.             procent = (self.stamina - 100) / 100 # узнаем процент изменения жизней
  18.             bonus = - (self.damage - (self.damage * procent)) # убавляем от атаки столько же процентов
  19.         elif self.stamina < 100:
  20.             procent = (100 - self.stamina) / 100 # узнаем процент изменения жизней
  21.             bonus = self.damage + (self.damage * procent) # прибавляем к атаке столько же процентов
  22.         is_work = random.randint(1,3) # 1 - бонус сохраняется, 2 - бонус=урон врага, 3 - бонус теряется
  23.         if is_work == 2:
  24.             bonus = attacked_char.damage
  25.         elif is_work == 3:
  26.             bonus = 0
  27.         self.damage += bonus
  28.         self.damage = round(self.damage, 2)
  29.         print(f"Сработал бонус к атаке: + {procent}%! Текущий урон: {self.damage}")
  30.        
  31.     def hit(self, attacked_char):
  32.         if self.superattack(attacked_char):
  33.             return None # если суператака, выйти из метода
  34.         self.mana += random.randint(1,10)
  35.         self.damage = random.randint(5, 15)
  36.         self.bonus_hit(attacked_char)
  37.         punch = random.choice(self.punch_names)  # название удара
  38.         attacked_char.stamina -= self.damage
  39.         print(f"{self.name} с помощью удара {punch} нанес {self.damage} единиц урона персонажу {attacked_char.name}")
  40.  
  41.     def superattack(self,attacked_char):
  42.         if self.mana > 40:
  43.             self.mana = 0
  44.             self.damage = random.randint(15, 25)
  45.             attacked_char.stamina -= self.damage
  46.             print(f"{self.name} ИСПОЛЬЗОВАЛ СУПЕРУДАР {self.xray_name.upper()} нанес {self.damage} единиц урона персонажу {attacked_char.name}")
  47.             return True
  48.         return False
  49.    
  50.     def say_info(self):
  51.         if self.stamina < 0:
  52.             self.stamina = 0
  53.         elif self.stamina > self.max_stamina:
  54.             self.stamina = self.max_stamina
  55.         self.stamina = round(self.stamina, 2)
  56.         # self.stamina = int(str(self.stamina)[:5])
  57.         print(f"{self.name}. Стамина = {self.stamina}. Мана = {self.mana}")
  58.  
  59. class Player(Character):
  60.     def heal(self):
  61.         bonus = random.randint(1, 20)
  62.         self.stamina += bonus
  63.         print(f"Здоровье восстановлено на {bonus} ед.!")
  64.  
  65. player = Player("Роман", "Всемогущая атака", ["ногой", "рукой"])
  66.  
  67. char1 = Character('Скорпион', "GET OVER HERE", [
  68.                   "Цепочный бам", "Огненный бум"])
  69. char2 = Character("Охладулькин", "Сосульки-Удалюльки",
  70.                   ["Ледяной бам", "Снежный бум"])
  71. char3 = Character("Кунг-фу панда", "Пельменная атака",
  72.                   ["Удар дракона", "Батутная поза"])
  73. char4 = Character("Бэтмен", "Потому что он БЭТМЕН", [
  74.                   "Удар могучей рукой", "Бэтаранг", "Удар могучей ногой"])
  75.  
  76. enemies = [char1, char2, char3, char4]
  77. # enemy1 = random.choice(enemies)
  78. # enemies.remove(enemy1)
  79. enemy2 = random.choice(enemies)
  80. print(f"{player.name} VS {enemy2.name}")
  81.  
  82.  
  83. while True:
  84.     time.sleep(3)
  85.     action = input("Выберите действие: 1 - исцелиться❤️, 2 - атаковать⚔️: ")
  86.     if action == "1":
  87.         player.heal()
  88.     else:
  89.         player.hit(enemy2)
  90.     enemy2.hit(player)
  91.     player.say_info()
  92.     enemy2.say_info()
  93.  
  94.     if player.stamina <= 0 and enemy2.stamina <= 0:
  95.         print("Ничья")
  96.         break
  97.     elif player.stamina <= 0:
  98.         print(f"{enemy2.name} победил")
  99.         break
  100.     elif enemy2.stamina <= 0:
  101.         print(f"{player.name} победил")
  102.         break
  103.     print("-" * 50)
  104.     # ставки
  105.     # изменение урона или хп
  106.     # уворот, fatality
  107.  
  108.    
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement