2026-rff_mp/shekurovaa/2/docs/data/command.py

44 lines
1.1 KiB
Python
Raw Normal View History

2026-05-20 17:55:28 +00:00
class Command:
def execute(self):
raise NotImplementedError
def undo(self):
raise NotImplementedError
class Player:
def __init__(self, position):
self.position = position
class MoveCommand(Command):
DIRS = {
"W": (0, -1),
"S": (0, 1),
"A": (-1, 0),
"D": (1, 0),
}
def __init__(self, maze, player, direction):
self.maze = maze
self.player = player
self.direction = direction.upper()
self.prev_position = None
def execute(self):
if self.direction not in self.DIRS:
return False
dx, dy = self.DIRS[self.direction]
current = self.player.position
nxt = self.maze.getCell(current.x + dx, current.y + dy)
if nxt is None or not nxt.isPassable():
return False
self.prev_position = current
self.player.position = nxt
return True
def undo(self):
if self.prev_position is not None:
self.player.position = self.prev_position
return True
return False