"""Паттерн Command - команды для управления игроком""" from abc import ABC, abstractmethod from models import Cell, Player class Command(ABC): """Интерфейс команды""" @abstractmethod def execute(self) -> None: pass @abstractmethod def undo(self) -> None: pass class MoveCommand(Command): """Команда перемещения игрока""" def __init__(self, player: Player, new_cell: Cell): self._player = player self._new_cell = new_cell self._old_cell = player.current_cell def execute(self) -> None: """Выполнение перемещения""" if self._player.can_move_to(self._new_cell): self._player.move_to(self._new_cell) def undo(self) -> None: """Отмена перемещения""" self._player.move_to(self._old_cell)