Гид по технологиям

Mad Libs на Python — как сделать игру «Vacation Fun»

4 min read Python Обновлено 02 Jan 2026
Mad Libs на Python — игра Vacation Fun
Mad Libs на Python — игра Vacation Fun

Человек записывает историю в дневнике

Что такое Mad Libs

Mad Libs — это шаблонная словесная игра, изобретённая Леонардом Стерном и Роджером Прайсом. Один игрок читает историю с пустыми местами, а остальные заполняют эти места словами (прилагательные, существительные, глаголы и т. д.) без знания контекста. Получается смешная, часто бессмысленная история, которую все с удовольствием читают вслух.

Факт: существует более 180 официальных Mad Libs с разными короткими историями. Mad Libs также адаптировали для мультсериалов и телешоу — примеры в англоязычных шоу включают The Big Bang Theory, The Office и другие.

Короткая дефиниция: Mad Libs — это игра-перемешка слов, где шаблон + произвольные слова дают неожиданный результат.

Как играть в Mad Libs (кратко)

  1. Выбираете шаблон истории с пометкой, какие части речи нужны (прилагательное, существительное и т.п.).
  2. Просите игроков по очереди называть слова, не показывая им сам текст шаблона.
  3. Подставляете слова в шаблон и читаете итоговую историю вслух.

Как собрать игру “Vacation Fun” на Python — пошагово

Ниже — перевод и адаптация оригинального примера на Python. Мы используем простые переменные и функцию input() для чтения слов от игрока.

Шаг 1 — объявляем переменные и собираем ввод от пользователя:

adjective = input("Введите прилагательное: ")
adjective2 = input("Введите ещё одно прилагательное: ")
noun = input("Введите существительное: ")
noun2 = input("Введите ещё одно существительное: ")
plural_noun = input("Введите множественное существительное: ")
game = input("Введите название игры: ")
plural_noun2 = input("Введите множественное существительное: ")
ing_verb = input("Введите глагол с окончанием -ing (на русском можно просто инфинитив): ")
ing_verb2 = input("Введите ещё один глагол с окончанием -ing: ")
plural_noun3 = input("Введите множественное существительное: ")
ing_verb3 = input("Введите глагол с окончанием -ing: ")
noun3 = input("Введите существительное: ")
plant = input("Введите название растения: ")
body_part = input("Введите часть тела: ")
place = input("Введите название места: ")
ing_verb4 = input("Введите глагол с окончанием -ing: ")
adjective3 = input("Введите прилагательное: ")
number = input("Введите число: ")
plural_noun4 = input("Введите множественное существительное: ")

Примечание: в русской версии глаголы с “-ing” может быть удобнее просить в инфинитиве (например, “плавать”, “читать”). Игра всё равно остаётся весёлой независимо от падежей — это часть комического эффекта.

Шаг 2 — формируем историю

story = (
"Отпуск — это когда вы отправляетесь в поездку в какое-то " + adjective + " место с вашей "
+ adjective2 + " семьёй. Обычно вы едете в место, которое рядом с/около " + noun + " или вверх, к "
+ noun2 + ". Хорошее место для отпуска — это то, где можно кататься на " + plural_noun + " или играть в " + game
+ " или ходить на охоту за " + plural_noun2 + ". Мне нравится проводить время, " + ing_verb + " или " + ing_verb2
+ ". Когда родители в отпуске, они едят по три " + plural_noun3 + " в день, отцы играют в гольф, а матери сидят и " + ing_verb3
+ ". Прошлым летом мой младший брат упал в " + noun3 + " и получил «отравление» растением " + plant + " по всей " + body_part
+ ". Моя семья собирается поехать в " + place + ", и я буду практиковать " + ing_verb4
+ ". Родителям нужны отпуска больше, чем детям, потому что родители всегда очень " + adjective3
+ " и потому что они работают по " + number + " часов в день круглый год, зарабатывая достаточно " + plural_noun4
+ ", чтобы оплатить этот отпуск.")

Шаг 3 — выводим историю на экран:

print(story)

Пример вывода

Вывод игры Mad Libs 'Vacation Fun' на Python

Как улучшить игру — варианты и идеи

  • GUI: используйте Tkinter для создания оконного интерфейса с полями ввода и кнопкой “Сгенерировать”.
  • Озвучивание: модуль pyttsx3 позволит озвучивать готовую историю, выбирать голос и скорость речи.
  • Валидация: проверяйте ввод на пустые строки; давайте примеры формата (например: “существительное — дом”).
  • Сохранение: добавьте экспорт истории в файл (.txt) и возможность загружать шаблоны из папки “templates”.
  • Мультиязычность: храните шаблоны в JSON с метаданными языка и частей речи.

Модели мышления и выбор подхода

  • Простота первой версии: начните с консольного варианта, чтобы сконцентрироваться на логике подстановок.
  • Итеративное улучшение: потом добавьте GUI, затем — синтез речи и хранение шаблонов.
  • UX-ориентированность: думайте о подсказках и примерах для пользователей, чтобы уменьшить забавные, но нечитаемые фразы.

Чек-лист по ролям (кто что делает)

  • Разработчик: реализует сбор ввода и генерацию строки, пишет unit-тесты.
  • UI/UX дизайнер: придумывает понятные подсказки, проверяет локализацию.
  • Тестировщик: прогоняет шаблон с разными вводами, проверяет сценки с пустыми/непредвиденными словами.
  • Продакт/ведущий: выбирает шаблоны и решает, какие функции приоритетны (озвучивание, экспорт и т. д.).

Мини-методология разработки (быстрый план)

  1. Минимальная рабочая версия: консоль + генерация истории.
  2. Покрытие тестами: простые сценарии работы и негативные кейсы.
  3. UI: добавить Tkinter-интерфейс.
  4. Интеграции: добавить pyttsx3 для озвучки и экспорт в .txt.
  5. Релиз и обратная связь: собирать реакции игроков и исправлять UX.

Примеры отказов и когда подход не работает

  • Локализация: русская морфология делает подстановки менее аккуратными — местоимения и падежи могут «ломать» фразу.
  • Автоматическая генерация набора слов без руководства дает бессмысленные или грубые результаты.
  • Для возрастной аудитории до 7 лет интерфейс и инструкции должны быть очень простыми.

Важно: не стоит полагаться на автоматическую коррекцию падежей — легче давать подсказки и примеры, чтобы игроки вводили подходящие формы.

Тест-кейсы и критерии приёмки

  • Ввод валидных слов: программа должна корректно подставлять все введённые строки и не падать.
  • Пустой ввод: если пользователь нажал Enter без текста — показывать сообщение и запросить повторно.
  • Длинные строки: при длинных вводах программа должна корректно выводить историю и не ломать формат.

Шаблоны и подсказки (cheat sheet)

  • Подсказки в input(): используйте примеры — “Введите существительное (например: море, дом)”.
  • Хранение шаблонов: JSON-структура с полем text и перечислением required_parts.
  • Экспорт: открыть файл в кодировке UTF-8 при записи, чтобы сохранить русские символы.

Пример альтернативной реализации с f-string (современный стиль Python)

# Сбор вводов — как выше
story = (
    f"Отпуск — это когда вы отправляетесь в поездку в какое-то {adjective} место с вашей {adjective2} семьёй. "
    f"Обычно вы едете в место, которое рядом с/около {noun} или вверх, к {noun2}. Хорошее место для отпуска — "
    f"то, где можно кататься на {plural_noun} или играть в {game} или ходить на охоту за {plural_noun2}. "
    f"Мне нравится проводить время, {ing_verb} или {ing_verb2}. Когда родители в отпуске, они едят по три {plural_noun3} в день, "
    f"отцы играют в гольф, а матери сидят и {ing_verb3}. Прошлым летом мой младший брат упал в {noun3} "
    f"и получил отравление растением {plant} по всей {body_part}. Моя семья собирается поехать в {place}, "
    f"и я буду практиковать {ing_verb4}. Родителям нужны отпуска больше, чем детям, потому что родители всегда "
    f"очень {adjective3} и потому что они работают по {number} часов в день круглый год, зарабатывая достаточно {plural_noun4}."
)
print(story)

Безопасность и приватность

Если вы собираете ввод от нескольких людей и сохраняете их истории, предупредите участников и не сохраняйте личные данные (ФИО, адреса) без явного согласия. Для локальной настольной игры это обычно неактуально, но для веб-версий — важно.

Краткое резюме

Mad Libs — отличный простой проект для обучения Python: он включает ввод пользователя, работу со строками и базовую обработку ошибок. Начните с консольного варианта, затем добавляйте GUI и озвучивание. Не забывайте про UX и локализацию — русская морфология потребует дополнительных подсказок для игроков.

Важно: основной плюс Mad Libs — это простота и возможность быстрого весёлого результата, который легко демонстрировать друзьям.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

KDE Connect: связать Android и Linux
Инструменты

KDE Connect: связать Android и Linux

Как создать резервную копию iPhone: iCloud и компьютер
Руководство

Как создать резервную копию iPhone: iCloud и компьютер

Как работают тонер-картриджи LaserJet
Принтеры

Как работают тонер-картриджи LaserJet

Словарь в JavaScript — Object и Map
JavaScript

Словарь в JavaScript — Object и Map

Двухэтапная проверка в TikTok: как включить
Безопасность

Двухэтапная проверка в TikTok: как включить

Отключить изображения в Firefox для ускорения
Firefox

Отключить изображения в Firefox для ускорения