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)