Магический шар 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 и почувствовать себя настоящим разработчиком! 💻✨
С уважением,