import time
from abc import ABC
from collections.abc import Callable
+from typing import override
import pygame
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):
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]:
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":
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