class Player: name = "player" character = 'S' def __init__(self, board_size): board_width, board_height = board_size start_x = board_width // 2 start_y = board_height // 2 self.position = (start_x, start_y) self.body = [self.position] self.direction = (1, 0) def handle_keystroke(self, keystroke, game): x, y = self.body[0] if keystroke.name in ("KEY_LEFT", "KEY_RIGHT", "KEY_UP", "KEY_DOWN"): if keystroke.name == "KEY_LEFT": self.direction = (-1, 0) elif keystroke.name == "KEY_RIGHT": self.direction = (1, 0) elif keystroke.name == "KEY_UP": self.direction = (0, -1) elif keystroke.name == "KEY_DOWN": self.direction = (0, 1) dx, dy = self.direction new_head = (x + dx, y + dy) if not game.on_board(new_head): game.end() return if new_head in self.body: game.end() return food = None for actor in game.actors: if getattr(actor, "name", None) == "food": food = actor break if food is not None and new_head == food.position: self.body.insert(0, new_head) if hasattr(food, "respawn"): food.respawn() else: self.body.insert(0, new_head) self.body.pop() self.position = self.body[0]