Игрок переходит между комнатами, осматривает их, собирает предметы в рюкзак, встречает врагов и следит за HP. Порядок находок случаен, поэтому прохождения отличаются.
Побег из замка: учителю
Ребёнок читает историю в консоли и вводит команды словами. Графического окна здесь нет. Мы разбираем готовый квест по частям, чтобы понять, как Python хранит состояние и принимает решения.
За 30 секунд
Чтобы быстро решить, подходит ли проект для занятия.
Найти меч и отмычку, попасть на чердак, победить дракона и открыть выход. Здоровье может закончиться раньше — тогда игра проиграна.
После первых команд Python или для повторения основ. Случайные события и несколько условий делают этот проект сложнее «Космической экспедиции».
10 занятий по 35–45 минут; 1–2 шага и три коротких задания в каждом. Можно идти медленнее и делить урок на два занятия.
«Сегодня мы не будем переписывать большую игру целиком. Сначала сыграем в неё, затем возьмём одну маленькую деталь — например, вопрос игроку — и соберём такую же сами. К концу курса мы сможем объяснить, почему игра помнит комнаты, предметы и здоровье.»
Что дети освоят
- Читать простой код сверху вниз и объяснять, что делает каждая строка.
- Использовать print(), input(), переменные, списки, словари, условия, циклы и функции.
- Проверять ошибочный ввод, менять HP и инвентарь, объяснять случайные события и победу.
Первое занятие
Готовый сценарий на 45 минут, который можно взять прямо в класс.
Перед началом
- Откройте полную игру в онлайн IDE или запустите скачанный .py в Python IDLE.
- Для живого диалога с игрой удобнее IDLE: в онлайн IDE ответы для input() нужно записать заранее, по строке на каждый вопрос.
- Проверьте урок 1 и кнопку «Запустить в IDE». Подготовьте названия комнат и предметов на доске или карточках.
- Не обещайте одинаковое прохождение: random.choice() выдаёт предметы в разном порядке.
- 0–5 минПокажите игру
Введите «осмотреть», затем «идти». Пусть дети назовут, что игра уже запомнила: комнату, предмет, HP.
- 5–10 минОбъясните идею
Это история с правилами. print() говорит с игроком, input() слушает ответ.
- 10–25 минРазберите урок 1
Пройдите два примера построчно; после каждой строки спросите, что появится на экране.
- 25–38 минДайте изменения
Пусть дети поменяют начало истории, спросят имя и запустят свой код.
- 38–45 минПодведите итог
Попросите объяснить разницу между текстом в кавычках и переменной без кавычек.
Карта всех уроков
Одна тема, один вопрос классу и одна методическая подсказка на каждый шаг.
Привет, замок!
Показываем текст и спрашиваем игрока, что делать.
Цель: Запустить первый диалог с игроком в IDLE.
Спросите: Зачем текст пишут в кавычках?
Ожидаемый ответ: Так Python понимает, что это готовое сообщение, а не имя переменной.
Подсказка: Попросите детей предсказать, что случится, если убрать кавычки вокруг текста. Затем запустите код и обсудите ошибку.
Состояние игрока
Храним здоровье, комнату и число ходов в переменных.
Цель: Понять, как игра запоминает изменения между ходами.
Спросите: Что станет с HP после hp -= 2?
Ожидаемый ответ: Старое число уменьшится на два; при 10 получится 8.
Подсказка: Спросите: чем отличаются строки «10» и число 10? Покажите, что из числа можно вычитать, а текст комнаты можно напечатать.
Комнаты и рюкзак
Собираем списки комнат и найденных предметов.
Цель: Добавлять предметы и проверять, что уже лежит в рюкзаке.
Спросите: Что меняется после inventory.append("карта")?
Ожидаемый ответ: В исходный список добавляется предмет «карта».
Подсказка: Попросите ребёнка назвать результат выражения «карта» in inventory до запуска. Не путайте предметы с их описаниями: описания появятся в уроке о словарях.
Выбор пути
Проверяем команду и не пускаем в несуществующую комнату.
Цель: Сделать первый осмысленный выбор игрока.
Спросите: Почему для сравнения команды нужны два знака ==?
Ожидаемый ответ: == сравнивает, а один = записывает значение в переменную.
Подсказка: Проверьте три ответа: правильная команда, слово с заглавной буквы, неизвестное слово. Спросите, почему здесь важны отступы.
Игровой цикл
Возвращаемся к вопросу после каждого действия.
Цель: Сделать так, чтобы игра не заканчивалась после одной команды.
Спросите: Почему игра снова спрашивает команду?
Ожидаемый ответ: Вопрос находится внутри цикла while; break или проигрыш останавливает его.
Подсказка: Обязательно покажите, как остановить программу в IDLE через Shell → Interrupt Execution, если ребёнок запустил бесконечный цикл.
Функция статуса
Выносим повторяющийся вывод в отдельную команду.
Цель: Написать функцию, которая показывает состояние героя.
Спросите: Когда выполняется код функции?
Ожидаемый ответ: Когда мы вызываем её по имени со скобками; при def только описываем.
Подсказка: Разделите на доске определение функции и её вызов: при def действие только описывается; при show_status(...) оно выполняется.
Словарь предметов
Связываем название находки с её описанием.
Цель: Узнавать описание предмета по его названию.
Спросите: Как словарь находит описание предмета?
Ожидаемый ответ: По ключу — имени предмета, например ITEMS["карта"].
Подсказка: Сравните словарь со списком: в списке мы ищем элемент по номеру, а в словаре — по ключу-имени. Покажите, что неизвестный ключ вызывает ошибку.
Случайная находка
Выбираем новый предмет так, чтобы он не повторился.
Цель: Сделать функцию поиска предмета для осмотра комнаты.
Спросите: Почему нельзя выбрать случайный элемент пустого списка?
Ожидаемый ответ: В нём нет вариантов; сначала нужно проверить, что список не пустой.
Подсказка: Спросите, что произойдёт, если вызвать random.choice([]). Пусть дети добавят проверку пустого списка до выбора.
Лечение и return
Используем аптечку и возвращаем новое здоровье.
Цель: Передать здоровье в функцию и получить обновлённое значение.
Спросите: Чем return отличается от print()?
Ожидаемый ответ: return передаёт значение вызывающему коду, а print() лишь показывает его.
Подсказка: Особенно важно показать разницу между print и return: print только показывает число, а return позволяет сохранить его в переменной снаружи функции.
Враги и победа
Добавляем случайную встречу и проверяем условие побега.
Цель: Связать изученные части с готовой игрой.
Спросите: Какие условия нужны для победы?
Ожидаемый ответ: Игрок на чердаке, отмычка в рюкзаке, дракон побеждён.
Подсказка: На этом уроке предложите детям сначала предсказать исход трёх вариантов кода, затем открыть полную игру и найти знакомые конструкции.
Если что-то пошло не так
Типичные места, на которых дети останавливаются.
Игра ждёт ответ
В онлайн IDE запишите ответы в правое поле по одному на строку. В IDLE вводите их в консоли по ходу игры.
Разные находки
Случайный предмет — часть механики. Сравните два прохождения, не ищите один «правильный» вывод.
Отступы
После if, while и def строки внутри блока начинаются с четырёх пробелов. Покажите это на коротком примере.
Большой файл пугает
Открывайте полный исходник как карту знакомых деталей; не требуйте от детей набирать его за одно занятие.