28 Генерация персонажей и битва

Run Settings
LanguagePython
Language Version
Run Command
import random import time import os # Цвета RED = "\033[31m" GREEN = "\033[32m" YELLOW = "\033[33m" BLUE = "\033[34m" RESET = "\033[0m" def roll_dice(sides): return random.randint(1, sides) def do_damage(attacker_name, attacker_str, defender_name, defender_str, defender_hp): damage = attacker_str - defender_str if damage < 0: damage = -damage + 1 else: damage = damage + 1 defender_hp = defender_hp - damage print(GREEN, attacker_name, "побеждает в раунде!", RESET) print(RED, defender_name, "получает", damage, "ед. урона", RESET) return defender_hp def show_character(name, race, health, strength): os.system("cls") print(GREEN, name, RESET) print(race) print("══════════════════") print(RED, "ЗДОРОВЬЕ:", health, RESET) print(BLUE, "СИЛА:", strength, RESET) print("") print(YELLOW, "Да войдет ваше имя в легенду...", RESET) print() input("Нажмите Enter для следующего раунда...") def get_health(): return (roll_dice(6) * roll_dice(12)) // 2 + 10 def get_strength(): return (roll_dice(6) * roll_dice(12)) // 2 + 12 def battle_round(p1_name, p1_str, p1_hp, p2_name, p2_str, p2_hp): round_num = 1 while True: os.system("cls") print(YELLOW, "⚔️ РАУНД", round_num, "⚔️", RESET) print("══════════════════") roll1 = roll_dice(6) roll2 = roll_dice(6) print(p1_name, "бросает:", roll1) print(p2_name, "бросает:", roll2) print() if roll1 > roll2: p2_hp = do_damage(p1_name, p1_str, p2_name, p2_str, p2_hp) elif roll2 > roll1: p1_hp = do_damage(p2_name, p2_str, p1_name, p1_str, p1_hp) else: print(YELLOW, "Ничья в раунде! Никто не получает урона.", RESET) print() print("══════════════════") print(p1_name, RED, "ЗДОРОВЬЕ:", p1_hp, RESET) print(p2_name, RED, "ЗДОРОВЬЕ:", p2_hp, RESET) time.sleep(3) if p1_hp <= 0: print(RED, "⚔️ ", p1_name, "пал в бою! ⚔️", RESET) print(GREEN, p2_name, "побеждает в битве за", round_num, "раундов!", RESET) break elif p2_hp <= 0: print(RED, "⚔️ ", p2_name, "пал в бою! ⚔️", RESET) print(GREEN, p1_name, "побеждает в битве за", round_num, "раундов!", RESET) break round_num += 1 print() input("Нажмите Enter для следующего раунда...") # Основной цикл программы while True: os.system("cls") print(YELLOW, "⚔️ ГЕНЕРАТОР ПЕРСОНАЖЕЙ И БИТВ ⚔️", RESET) print("══════════════════") # генерация персонажа 1 print("⚔️ СОЗДАНИЕ ПЕРСОНАЖА 1 ⚔️") print("══════════════════") name1 = input("Назовите своего персонажа: ") race1 = input("Тип персонажа (человек, эльф, виард, орк, чертёнок, волшебник): ") health1 = get_health() strength1 = get_strength() show_character(name1, race1, health1, strength1) # генерация персонажа 2 os.system("cls") print("⚔️ СОЗДАНИЕ ПЕРСОНАЖА 1 ⚔️") print("══════════════════") name2 = input("Назовите своего персонажа: ") race2 = input("Тип персонажа (человек, эльф, виард, орк, чертёнок, волшебник): ") health2 = get_health() strength2 = get_strength() show_character(name2, race2, health2, strength2) battle_round(name1, strength1, health1, name2, strength2, health2) while True: print() print("══════════════════") choice = input("1 - Повторить бой теми же персонажами\n" "2 - Создать новых персонажей\n" "3 - Выйти из программы\n" "Ваш выбор: ") if choice == "1": battle_round(name1, strength1, health1, name2, strength2, health2) elif choice == "2": break elif choice == "3": os.system("cls") print(YELLOW, "До новых встреч!", RESET) exit() else: print(RED, "Неверный ввод! Попробуйте снова.", RESET) time.sleep(1)
Editor Settings
Theme
Key bindings
Full width
Lines