From 5090c09123a805cc5ae8550c11c0f9b78d67622f Mon Sep 17 00:00:00 2001 From: paulusja Date: Thu, 23 Apr 2026 14:52:45 +0200 Subject: [PATCH] Prevent snake from turning around directly. --- snake/snake_state.py | 4 ++++ snake/snake_state_machine.py | 10 +++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/snake/snake_state.py b/snake/snake_state.py index 5348db0..0342660 100644 --- a/snake/snake_state.py +++ b/snake/snake_state.py @@ -9,3 +9,7 @@ class SnakeState: return SnakeSegment(center=self._get_next_pos(old_head.get_position(), old_head.get_radius()), radius=old_head.get_radius(), color=old_head.get_color()) + + @property + def type(self): + return self.__class__ \ No newline at end of file diff --git a/snake/snake_state_machine.py b/snake/snake_state_machine.py index e5b3da7..3bfbd43 100644 --- a/snake/snake_state_machine.py +++ b/snake/snake_state_machine.py @@ -16,9 +16,17 @@ class SnakeStateMachine: InputManager.RIGHT: SnakeRightMovementState() } + self.__input_ignore_dict = { + SnakeDownMovementState: InputManager.UP, + SnakeUpMovementState: InputManager.DOWN, + SnakeLeftMovementState: InputManager.RIGHT, + SnakeRightMovementState: InputManager.LEFT + } + def update(self, user_input): - self.__state = self.__next_state_dict.get(user_input, self.__state) + if user_input != self.__input_ignore_dict.get(self.__state.type, None): + self.__state = self.__next_state_dict.get(user_input, self.__state) def get_state(self):