Карта курса → Модуль 2 → Урок 2.5

Паттерн «Состояние»

Одна сущность, разные режимы поведения.

Паттерн «Состояние»

🎣 Hook

Игрок в режиме Survival и в режиме Creative — будто два разных персонажа. Но это один объект с разным состоянием.

🧠 Concept

Термины: list, dictionary, loop, function — пишем по-английски, объясняем по-русски.

Паттерн «Состояние» позволяет переключать поведение объекта через текущее состояние.

Пример состояний игры:
- lobby
- playing
- paused
- game_over

Переходы важны не меньше самих состояний: что может происходить и в каком порядке.

🧩 Квиз +10 XP
Что лучше всего описывает State pattern?
A Формат хранения файлов
B Управление поведением через состояния
C Метод сортировки
D Вид цикла

🔧 Практика

Задание 1: укажи начальное состояние игры и следующее после старта.

state = "lobby"
if state == "lobby":
    state = "playing"

Заполни пропуски в коде в своей тетради/редакторе. Ключевые ответы: lobby/playing.

Задание 2: заполни состояние паузы.

if command == "pause":
    state = "paused"

Проверь себя: paused.

🧩 Квиз +10 XP
Почему state machine удобна?
A Убирает все ошибки
B Сокращает объём данных
C Делает переходы явными и проверяемыми
D Работает без тестов

🏗️ Сборка: мини-проект

Сделай state machine для моба: idle → patrol → chase → attack → idle. Добавь условия переходов.

👹 Мини-босс +120 XP

Комбинируем текущую тему с предыдущими навыками.

A Сделать без структуры, потом чинить
B Сначала план, затем реализация и проверка
C Копировать решение без понимания
D Пропустить тесты ради скорости

💭 Reflection

Теперь ты управляешь сложным поведением через конечный автомат, а не через хаотичный набор if. Это делает код предсказуемым.