Files
project_game/player.py
2025-12-14 00:51:52 -05:00

57 lines
1.3 KiB
Python

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]