Магический шар 8

Магический шар 8

Python Tech Talks

Друзья, всем привет! Сегодня подробно разберём как создать свою текстовую игру "Магический шар 8". 🔮

🌟 В этой игре игрок задает вопрос, на который магический шар отвечает предсказанием. Всего есть 8 возможных ответов, которые магический шар может дать. Ты можешь добавить свои собственные варианты или оставить только классические ответы.

Не знаешь, с чего начать? Не беда! Мы подготовили для вас шаг за шагом инструкцию по созданию игры. Просто следуй ей и в конце ты получишь готовую игру "Магический шар 8"! 🎱


Создание игры

Блок импорта: Нам понадобятся два модуля: random и sys. Импортируем их:

from random import randint
import sys 

Функция get_sphere_answer. Данная функция в зависимости от переданного аргумента moodtype возвращает ответ из соответствующего словаря (definite_positive, doubt_positive, neutral, negative) с помощью индекса rand_answer:

def get_sphere_answer(moodtype=0, rand_answer=1):
    if moodtype == 2:
        definite_positive = {1: 'Бесспорно', 2: 'Предрешено', 3: 'Никаких сомнений', 4: 'Определённо да', 5: 'Можешь быть уверен в этом'}
        return definite_positive[rand_answer]
    elif moodtype == 1:
        doubt_positive = {1: 'Мне кажется — «да»', 2: 'Вероятнее всего', 3: 'Хорошие перспективы', 4: 'Знаки говорят — «да»', 5: 'Скорее всего - «да»'}
        return doubt_positive[rand_answer]
    elif moodtype == 0:
        neutral = {1: 'Пока не ясно, попробуй снова', 2: 'Спроси позже', 3: 'Лучше не рассказывать', 4: 'Сейчас нельзя предсказать', 5: 'Сконцентрируйся и спроси опять'}
        return neutral[rand_answer]
    elif moodtype == -1:
        negative = {1: 'Даже не думай', 2: 'Мой ответ — «нет»', 3: 'По моим данным — «нет»', 4: 'Перспективы не очень хорошие', 5: 'Весьма сомнительно'}
        return negative[rand_answer]

Функция get_rand_mood. Данная функция генерирует случайное число для mood (от -1 до 2 включительно) и для num_rand_answer (от 1 до 5 включительно) и возвращает их:

def get_rand_mood():
    mood = randint(-1, 3)
    num_rand_answer = randint(1, 5)
    return mood, num_rand_answer

Функция get_user_quest. Данная функция запрашивает у пользователя вопрос, проверяет на ввод пустой строки или "выход", и возвращает введенный вопрос:

def get_user_quest():
    while True:
        user_quest = input('Каков ваш вопрос?\n>>> ')
        if user_quest == '':
            print('Шар молчит в ответ')
            continue
        elif user_quest.casefold() == 'выход':
            return 0
        else:
            break
    return

Функция main. Это основная функция программы, выводит приветственное сообщение, запрашивает у пользователя вопрос с помощью функции get_user_quest, если пользователь вводит "выход", завершает программу, иначе запрашивает случайное настроение и ответ через функцию get_rand_mood и выводит ответ от шара через функцию get_sphere_answer. После каждого ответа предлагает пользователю выйти из программы или задать еще вопрос. Реализация функции:

def main():
    print("Магический шар 8 - шуточный способ предсказывать будущее!")
    while True:
        user_action = get_user_quest()
        if user_action == 0:
            print('Всего доброго')
            sys.exit()
        else:
            mood, answer = get_rand_mood()
            print(get_sphere_answer(mood, answer))
            print('Для выхода наберите «выход»')
        continue

Условие name == 'main'. Данное условие проверяет, запущена ли программа напрямую, и если да, вызывает функцию main() для запуска игры Магический Шар 8.

if __name__ == '__main__':
    main()


Вся программа:

from random import randint
import sys


def get_sphere_answer(moodtype=0, rand_answer=1):
    if moodtype == 2:
        definite_positive = {1: 'Бесспорно', 2: 'Предрешено', 3: 'Никаких сомнений', 4: 'Определённо да', 5: 'Можешь быть уверен в этом'}
        return definite_positive[rand_answer]
    elif moodtype == 1:
        doubt_positive = {1: 'Мне кажется — «да»', 2: 'Вероятнее всего', 3: 'Хорошие перспективы', 4: 'Знаки говорят — «да»', 5: 'Скорее всего - «да»'}
        return doubt_positive[rand_answer]
    elif moodtype == 0:
        neutral = {1: 'Пока не ясно, попробуй снова', 2: 'Спроси позже', 3: 'Лучше не рассказывать',
                   4: 'Сейчас нельзя предсказать', 5: 'Сконцентрируйся и спроси опять'}
        return neutral[rand_answer]
    elif moodtype == -1:
        negative = {1: 'Даже не думай', 2: 'Мой ответ — «нет»', 3: 'По моим данным — «нет»',
                    4: 'Перспективы не очень хорошие', 5: 'Весьма сомнительно'}
        return negative[rand_answer]


def get_rand_mood():
    mood = randint(-1, 2)
    num_rand_answer = randint(1, 5)
    return mood, num_rand_answer


def get_user_quest():
    while True:
        user_quest = input('Каков ваш вопрос?\n>>> ')
        if user_quest == '':
            print('Шар молчит в ответ')
            continue
        elif user_quest.casefold() == 'выход':
            return 0
        else:
            break
    return


def main():
    print("Магический шар 8 - шуточный способ предсказывать будущее!")
    while True:
        user_action = get_user_quest()
        if user_action == 0:
            print('Всего доброго')
            sys.exit()
        else:
            mood, answer = get_rand_mood()
            print(get_sphere_answer(mood, answer))
            print('Для выхода наберите «выход»')
        continue


if __name__ == '__main__':
    main()


Не упусти шанс попробовать свои силы в создании текстовой игры на Python и почувствовать себя настоящим разработчиком! 💻✨


С уважением,

Python Tech Talks

Report Page