Глава 17 · Модель и правила
Правильный алгоритм хода
Один путь для любого способа сделать ход — проверка, ход, правила, смена игрока.
Валидный ход — что это?
attempt_move(index) — единый путь для мыши и клавиатуры
(раздел 17.24). Разберём его в двух шагах: сначала фильтр валидности, потом — что происходит
после того, как ход уже принят.
Диаграмма 1 — фильтр валидности хода
Невалидный ход НЕ переключает игрока
Это частая ошибка (Debug Lab 7, раздел 17.29): если клик проигнорирован — очередь хода должна остаться прежней. Переключение игрока происходит только ПОСЛЕ успешного хода.
Диаграмма 2 — что происходит после валидного хода
Видимый результат валидного хода
Переключение игрока — три эквивалентных способа
smena_igroka_razvernuto.py
if current_player == "X":
current_player = "O"
else:
current_player = "X"
smena_igroka_kratko.py
current_player = "O" if current_player == "X" else "X"
Сначала читаемость, лаконичность потом
Обе версии делают одно и то же. Развёрнутая явно читается как «если/иначе» — с ней проще начинать. Короткая версия (условное выражение, глава 9; его часто называют тернарным оператором) — не «умнее», просто компактнее, когда вы уже уверенно её читаете.
Практика: логика одного хода
Автоматическая проверка — валидация хода и переключение игрока на чистых функциях