Quick actions

cmd+k|ctrl+k

Navigation

Languages

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

Snippet info

Language

Python

Visibility

public

Author

python100

Created

2025-07-30T17:12:13.404526Z

Updated

2025-07-30T17:12:13.404526Z

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)
INFO