diff --git a/__pycache__/Player.cpython-313.pyc b/__pycache__/Player.cpython-313.pyc index bbd575a..8327235 100644 Binary files a/__pycache__/Player.cpython-313.pyc and b/__pycache__/Player.cpython-313.pyc differ diff --git a/nav_game.py b/nav_game.py index a7c8929..30c7f2a 100644 --- a/nav_game.py +++ b/nav_game.py @@ -1,7 +1,9 @@ from retro.game import Game -from player import Player +from player import Player + board_size = (100, 25) player = Player(board_size) -game = Game([player], {"score": 0}, board_size=board_size, color = "pink", debug=TRUE) -game.play() \ No newline at end of file +game = Game([player],{"score": 0}, board_size=board_size, color="pink", debug=True,) + +game.play() diff --git a/player.py b/player.py index eb79bec..3030511 100644 --- a/player.py +++ b/player.py @@ -4,25 +4,39 @@ class Player: def __init__(self, board_size): board_width, board_height = board_size - self.position = (board_width // 2, board_height - 1) - + 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.position + x, y = self.body[0] + if keystroke.name in ("KEY_LEFT", "KEY_RIGHT", "KEY_UP", "KEY_DOWN"): - if keystroke.name == "KEY_LEFT": - new_position = (x - 1, y) - elif keystroke.name == "KEY_RIGHT": - new_position = (x +1, y) + 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) - elif keystroke.name == "KEY_UP": - new_position = (x, y-1) - - elif keystroke.name == "KEY_DOWN": - new_position = (x, y+1) + dx, dy = self.direction + new_head = (x + dx, y + dy) - if game.on_board(new_position): - if game.is_empty(new_position): - self.position = new_position - else: - game.end() \ No newline at end of file + if not game.on_board(new_head): + game.end() + return + + if new_head in self.body: + game.end() + return + + self.body.insert(0, new_head) + self.body.pop() + + self.position = self.body[0]