← маршрут 1–48 · личный кабинет

Занятие 44. Генерация игровых событий

45 минут учебной работыиндивидуальнотекстовая RPG

Перед началом

Что открыть: Открой рабочую версию проекта после занятия 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=3HP=6; coins=5
Ловушка при HP=6, coins=3HP=4; coins=3
Отдых при HP=6, coins=3HP=7; coins=3
Ловушка при HP=1HP=0
Отдых при HP=10HP=10

Что сдать

Сдай рабочую версию проекта после занятия 44 и короткий протокол проверки: входные данные → ожидалось → получилось.

Если нужна поддержка: Если задача не запускается целиком, выполни один шаг отдельно и объясни, что должно измениться до следующего шага.

Типичное затруднение

Для теста случайности временно фиксируй seed или подставляй конкретный ключ, иначе дефект трудно воспроизвести.

Домашняя часть

Добавь четвёртое событие и проверь его отдельно от случайного выбора.

После базы: Сделай маленький тест, который вручную применяет каждое событие по одному разу.

Если появилась ошибка

Traceback — сообщение Python об ошибке. Сначала прочитай его последнюю строку и найди номер строки своего файла. Повтори только тот маленький шаг, на котором возникла ошибка; после исправления снова запусти тот же проверочный случай. Если используешь ИИ, сохрани собственную попытку и попроси одну подсказку, а не готовое решение.