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

Занятие 33. Сборка и расширение игры

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

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

Что открыть: Открой рабочую версию проекта после занятия 32. Демонстрационный lesson-33.py используй как отдельный маленький пример.

Исходные данные: Используй карту занятия 27, зелье занятия 24, функции занятий 29–30 и простой текстовый save занятия 32.

Что нужно понять

Занятие 33 посвящено теме «Сборка и расширение игры». Здесь этот навык применяется не как отдельное упражнение, а как часть общей текстовой RPG. Версия 1.0 должна связывать уже изученные механики через одно состояние героя: старт, локацию, инвентарь, бой и завершение. Нового синтаксиса здесь не требуется.

Минимальный пример

state={"name":"Лея","hp":6,"coins":3,"location":"лагерь","inventory":["зелье"]}
locations={"лагерь":["лес"],"лес":["лагерь","башня"],"башня":["лес"]}
def move(state,target):
    if target in locations[state["location"]]: state["location"]=target
def use_potion(state):
    if "зелье" in state["inventory"] and state["hp"]<10:
        state["hp"]=min(10,state["hp"]+5); state["inventory"].remove("зелье")
def battle(state):
    enemy_hp=4
    while state["hp"]>0 and enemy_hp>0:
        enemy_hp=max(0,enemy_hp-3)
        if enemy_hp>0: state["hp"]=max(0,state["hp"]-2)
move(state,"лес"); use_potion(state); move(state,"башня"); battle(state)
with open("save.txt","w",encoding="utf-8") as f:
    f.write(state["name"]+"\n"+str(state["hp"])+"\n"+str(state["coins"])+"\n")
print(state)

Скачать демонстрационный .py-файл

Практика

Собери обязательный путь: старт → переход лагерь→лес → использование зелья → переход лес→башня → бой → завершение и сохранение name/hp/coins в текстовый файл.

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

Критерий проверки

Один запуск проходит весь обязательный путь без ручного редактирования переменных; изменения hp/inventory/location сохраняются между шагами.

Как проверить: Проверяй после каждого этапа: стартовое состояние; после перехода; после зелья; после боя; после сохранения.

Что сдать

Сдай папку версии 1.0, README с командой запуска и протокол обязательного пути.

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

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

Не переписывай работающие модули одновременно. Подключай по одной части и после каждого шага запускай основной сценарий.

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

Добавь одну небольшую возможность, используя уже изученные конструкции, и сохрани копию версии 1.0.

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

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

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