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