← маршрут 1–48 · личный кабинет
Занятие 44. Генерация игровых событий
Перед началом
Что открыть: Открой рабочую версию проекта после занятия 43. Демонстрационный lesson-44.py используй как отдельный маленький пример.
Исходные данные: У каждого события ровно три обязательных поля: text, resource, delta. Ограничение 0–10 применяется только к hp.
Что нужно понять
Занятие 44 посвящено теме «Генерация игровых событий». Здесь этот навык применяется не как отдельное упражнение, а как часть общей текстовой RPG. Все события используют одинаковую схему: text — сообщение, resource — имя изменяемого ресурса, delta — величина изменения. Один общий обработчик читает эти поля и меняет state.
Минимальный пример
import random
state={"hp":6,"max_hp":10,"coins":3}
events=[{"text":"Ты нашёл монеты.","resource":"coins","delta":2},{"text":"Ты попал в ловушку.","resource":"hp","delta":-2},{"text":"Ты немного отдохнул.","resource":"hp","delta":1}]
def apply_event(state,event):
key=event["resource"]; state[key]+=event["delta"]
if key=="hp": state["hp"]=max(0,min(state["max_hp"],state["hp"]))
print(event["text"],state)
for event in events:
demo={"hp":6,"max_hp":10,"coins":3}; apply_event(demo,event)
chosen=random.choice(events); apply_event(state,chosen)Скачать демонстрационный .py-файл
Практика
Старт: hp=6, max_hp=10, coins=3. Создай три события с полями text/resource/delta: находка coins +2, ловушка hp -2, отдых hp +1. Сначала вручную проверь каждое, потом выбери событие через random.choice.
Связь с проектом: После базового упражнения перенеси изученный приём в рабочую версию проекта и сохрани версию после занятия 44.
Критерий проверки
Находка→coins5; ловушка→hp4; отдых→hp7; ловушка при hp1→0; отдых при hp10→10. Добавление нового события той же схемы не требует ветки по его названию.
Как проверить: Пять заданных проверок выполняются с новым стартовым состоянием для каждой.
| Что произошло | Состояние после действия |
|---|---|
| Находка при HP=6, coins=3 | HP=6; coins=5 |
| Ловушка при HP=6, coins=3 | HP=4; coins=3 |
| Отдых при HP=6, coins=3 | HP=7; coins=3 |
| Ловушка при HP=1 | HP=0 |
| Отдых при HP=10 | HP=10 |
Что сдать
Сдай рабочую версию проекта после занятия 44 и короткий протокол проверки: входные данные → ожидалось → получилось.
Если нужна поддержка: Если задача не запускается целиком, выполни один шаг отдельно и объясни, что должно измениться до следующего шага.
Типичное затруднение
Для теста случайности временно фиксируй seed или подставляй конкретный ключ, иначе дефект трудно воспроизвести.
Домашняя часть
Добавь четвёртое событие и проверь его отдельно от случайного выбора.
После базы: Сделай маленький тест, который вручную применяет каждое событие по одному разу.
Если появилась ошибка
Traceback — сообщение Python об ошибке. Сначала прочитай его последнюю строку и найди номер строки своего файла. Повтори только тот маленький шаг, на котором возникла ошибка; после исправления снова запусти тот же проверочный случай. Если используешь ИИ, сохрани собственную попытку и попроси одну подсказку, а не готовое решение.