From 54dedd65898d35f2de1de126997951b44e22ad2f Mon Sep 17 00:00:00 2001 From: Axy Date: Sat, 29 Aug 2026 13:39:11 +0200 Subject: [PATCH] Input buffering --- src/pacman/input.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/pacman/input.py b/src/pacman/input.py index 8a69e36..5c94f89 100644 --- a/src/pacman/input.py +++ b/src/pacman/input.py @@ -1,6 +1,7 @@ import time from abc import ABC from collections.abc import Callable +from typing import override import pygame @@ -10,10 +11,10 @@ from pacman.render import EndingRenderer, MenuRenderer class Input(ABC): def get_event(self, event: pygame.event.Event) -> None: - return + pass def get_key(self, keys: pygame.key.ScancodeWrapper) -> None: - return + pass class MenuInput(Input): @@ -39,6 +40,7 @@ class MenuInput(Input): def validation(self) -> None: self.functions[self.index]() + @override def get_event(self, event: pygame.event.Event) -> None: if event.type == pygame.KEYDOWN: if event.key in [1073741906, 119]: @@ -59,17 +61,22 @@ class GameInput(Input): self.player = player self.next_level = next_lvl self.kill = kill + self.next_move: tuple[int, int] | None = None + @override def get_key(self, keys: pygame.key.ScancodeWrapper) -> None: if keys[pygame.K_UP] or keys[pygame.K_w]: - self.player.go_to((0, -1)) + self.move = (0, -1) elif keys[pygame.K_DOWN] or keys[pygame.K_s]: - self.player.go_to((0, 1)) + self.next_move = (0, 1) elif keys[pygame.K_LEFT] or keys[pygame.K_a]: - self.player.go_to((-1, 0)) + self.next_move = (-1, 0) elif keys[pygame.K_RIGHT] or keys[pygame.K_d]: - self.player.go_to((1, 0)) + self.next_move = (1, 0) + if self.player.can_move() and self.next_move: + self.player.go_to(self.next_move) + @override def get_event(self, event: pygame.event.Event) -> None: if event.type == pygame.KEYDOWN: if event.unicode == "n": @@ -86,6 +93,7 @@ class EndingInput(Input): self.add_score = add_score self.name = "" + @override def get_event(self, event: pygame.event.Event) -> None: if event.type == pygame.TEXTINPUT: c: str = event.text -- 2.53.0