🧙♂️✨ Магическая угадайка на Bash✨♂️🧙

Играй и колдуй с числами!

Представляем волшебный скрипт для любителей головоломок и терминальных приключений! Эта игра превращает угадывание чисел в захватывающее заклинание с цветными эффектами и магическими подсказками.

🔮 Как работает игра?

После запуска скрипта вам явится загадочное сообщение:

=== 🎩 Магическая угадайка ===

Ваша задача — угадать число за минимальное количество попыток. Каждая ошибка приближает к разгадке через магические подсказки:

  • 🔥 Пламя обжигает! — ошибка до 5
  • 🌶️ Искры летят! — до 10
  • ☀️ Тепло волшебства — до 20
  • 🌬️ Ветер перемен — до 30
  • ❄️ Ледяные руны — до 40
  • 🧊 Холод древних чар — больше 40

🛠️ Как запустить игру?

  1. Скопируйте код в файл magic_guess.sh
  2. Сделайте его исполняемым: chmod +x magic_guess.sh
  3. Запустите: ./magic_guess.sh

🔄 Механика игры

Пример диалога с программой:

Твое заклинание (число): 50
🌬️ Ветер перемен ↑ Сила растёт!
Твое заклинание (число): 75
❄️ Ледяные руны ↓ Магия угасает...
Твое заклинание (число): 63
🎉 Поздравляю! Ты угадал за 3 попыток!
✨ Магия сработала!

🎨 Визуальное оформление

Используется магия ANSI-цветов для создания атмосферы:

  • 🌈 RED 🔥 для критических ошибок
  • 🌀 BLUE ❄️ для холодных подсказок
  • 🌞 YELLOW ☀️ для теплых угадываний

Цвета задаются через tput, что делает игру живой даже в текстовом интерфейсе.

💡 Секрет успеха

Чтобы быстро победить, следуйте этим советам:

  • Начните с середины диапазона (50)
  • Используйте подсказки о направлении (↑↑ или ↓↓)
  • Запоминайте реакцию “ветра перемен” и “ледяных рун”

🚀 Как улучшить игру?

Попробуйте добавить:

  • ⏱️ Таймер на угадывание
  • 📊 Статистику попыток
  • 🧙♂️ Расширенные заклинания (например, /hint для подсказки)
  • 🎲 Режим сложности

✨ Готов к магическому приключению?

Скачайте скрипт и начните колдовать с числами! 🧙♂️✨ Убедитесь, что ваш терминал поддерживает ANSI-цвета для полного погружения в атмосферу волшебства.

#!/bin/bash

# Настройки цветов
RED=$(tput setaf 1)
GREEN=$(tput setaf 2)
YELLOW=$(tput setaf 3)
BLUE=$(tput setaf 4)
MAGENTA=$(tput setaf 5)
CYAN=$(tput setaf 6)
RESET=$(tput sgr0)

function get_hint() {
    local diff=$1
    diff=${diff#-}  # Абсолютное значение
    
    if (( diff == 0 )); then
        echo "${GREEN}✨ Точная магия!${RESET}"
    elif (( diff <= 5 )); then
        echo "${RED}🔥 Пламя обжигает!${RESET}"
    elif (( diff <= 10 )); then
        echo "${MAGENTA}🌶️ Искры летят!${RESET}"
    elif (( diff <= 20 )); then
        echo "${YELLOW}☀️ Тепло волшебства${RESET}"
    elif (( diff <= 30 )); then
        echo "${CYAN}🌬️ Ветер перемен${RESET}"
    elif (( diff <= 40 )); then
        echo "${BLUE}❄️ Ледяные руны${RESET}"
    else
        echo "${BLUE}🧊 Холод древних чар${RESET}"
    fi
}

echo -e "${MAGENTA}=== 🎩 Магическая угадайка ===${RESET}"
echo -e "${CYAN}Привет, волшебник! Я загадал число от 1 до 100...${RESET}"

target=$((RANDOM % 100 + 1))
attempts=0
last_diff=0

while true; do
    read -p "Твое заклинание (число): " guess
    
    if [[ "$guess" == "exit" ]]; then
        echo -e "${YELLOW}🔮 Заклинание рассеяно! Число было: $target${RESET}"
        exit
    fi

    if ! [[ "$guess" =~ ^[0-9]+$ ]] || (( guess < 1 )) || (( guess > 100 )); then
        echo -e "${YELLOW}🧙♂️ Только цифры в свитке, маг!${RESET}"
        continue
    fi

    attempts=$((attempts + 1))
    diff=$((guess - target))
    hint=$(get_hint $diff)
    
    if (( diff == 0 )); then
        echo -e "${GREEN}🎉 Поздравляю! Ты угадал за $attempts попыток!${RESET}"
        echo -e "${MAGENTA}✨ Магия сработала!${RESET}"
        break
    else
        echo -n "$hint "
        
        # Подсказка о направлении
        if (( last_diff != 0 )); then
            if (( ${diff#-} < ${last_diff#-} )); then
                echo -e "${GREEN}↑ Сила растёт!${RESET}"
            elif (( ${diff#-} > ${last_diff#-} )); then
                echo -e "${BLUE}↓ Магия угасает...${RESET}"
            fi
        fi
        
        last_diff=$diff
    fi
done

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *