← маршрут 1–48 · личный кабинет
Занятие 33. Сборка и расширение игры
Перед началом
Что открыть: Открой рабочую версию проекта после занятия 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 об ошибке. Сначала прочитай его последнюю строку и найди номер строки своего файла. Повтори только тот маленький шаг, на котором возникла ошибка; после исправления снова запусти тот же проверочный случай. Если используешь ИИ, сохрани собственную попытку и попроси одну подсказку, а не готовое решение.