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

Занятие 43. Квесты и состояние задания

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

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

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

Исходные данные: Награда — ровно 5 монет; старт coins=2.

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

Занятие 43 посвящено теме «Квесты и состояние задания». Здесь этот навык применяется не как отдельное упражнение, а как часть общей текстовой RPG. Квест хранит progress, required и done. Награда выдаётся только при первом переходе к завершённому состоянию: условие проверяет progress >= required и not done.

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

quest={"required":3,"progress":0,"done":False}
coins=2
def check_quest(quest,coins):
    if quest["progress"]>=quest["required"] and not quest["done"]:
        quest["done"]=True; coins+=5
    return coins
for found in range(1,5):
    quest["progress"]+=1; coins=check_quest(quest,coins); print(quest["progress"],quest["done"],coins)
coins=check_quest(quest,coins)
print("Повторная проверка:",quest["progress"],quest["done"],coins)

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

Практика

Старт: progress=0, required=3, done=False, coins=2. Каждый найденный кристалл увеличивает progress на 1. При первом достижении 3 добавь 5 монет и поставь done=True. Повторные проверки и четвёртый кристалл не дают новую награду.

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

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

0→coins2; progress2→coins2; progress3→done True, coins7; повторная проверка→coins7; progress4→coins7.

Как проверить: Пройди всю последовательность 0,2,3,повтор,4 в одном запуске и выводи progress/done/coins.

Что произошлоСостояние после действия
До находокprogress=0; done=False; coins=2
Найдено два кристаллаprogress=2; done=False; coins=2
Найден третийprogress=3; done=True; coins=7
Повторная проверка завершённого квестаcoins=7; новой награды нет
Найден четвёртыйprogress=4; done=True; coins=7

Что сдать

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

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

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

Не выдавай награду при каждом вызове проверки после завершения. Используй флаг done.

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

Добавь описание квеста и ещё один шаг прогресса, не меняя требуемую цель.

После базы: Добавь функцию проверки квеста и протестируй значения progress 0, 2, 3 и 4.

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

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