34 lines
1.1 KiB
Python
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
|