se_uebungen/snake/snake_state_machine.py
2026-04-23 14:52:45 +02:00

34 lines
1.1 KiB
Python

from snake_up_movement_state import SnakeUpMovementState
from snake_down_movement_state import SnakeDownMovementState
from snake_left_movement_state import SnakeLeftMovementState
from snake_right_movement_state import SnakeRightMovementState
from input_manager import InputManager
class SnakeStateMachine:
def __init__(self):
self.__state = SnakeLeftMovementState()
self.__next_state_dict = {
InputManager.UP: SnakeUpMovementState(),
InputManager.DOWN: SnakeDownMovementState(),
InputManager.LEFT: SnakeLeftMovementState(),
InputManager.RIGHT: SnakeRightMovementState()
}
self.__input_ignore_dict = {
SnakeDownMovementState: InputManager.UP,
SnakeUpMovementState: InputManager.DOWN,
SnakeLeftMovementState: InputManager.RIGHT,
SnakeRightMovementState: InputManager.LEFT
}
def update(self, user_input):
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):
return self.__state