2021-04-19 00:07:40 +02:00
|
|
|
from enum import IntEnum
|
|
|
|
|
|
|
|
|
|
|
|
class Direction(IntEnum):
|
|
|
|
DOWN = 0
|
|
|
|
LEFT = 1
|
|
|
|
UP = 2
|
|
|
|
RIGHT = 3
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
def rotate_left(direction):
|
|
|
|
return Direction((direction - 1) % 4)
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
def rotate_right(direction):
|
|
|
|
return Direction((direction + 1) % 4)
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
def get_vector(direction):
|
|
|
|
if direction == Direction.UP:
|
|
|
|
return 0, -1
|
|
|
|
elif direction == Direction.DOWN:
|
|
|
|
return 0, 1
|
|
|
|
elif direction == Direction.LEFT:
|
|
|
|
return -1, 0
|
|
|
|
elif direction == Direction.RIGHT:
|
|
|
|
return 1, 0
|
2021-04-19 01:41:02 +02:00
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
def from_vector(vector):
|
|
|
|
if vector[0] == 0:
|
|
|
|
return Direction.DOWN if vector[1] == 1 else Direction.UP
|
|
|
|
else:
|
|
|
|
return Direction.LEFT if vector[0] == -1 else Direction.RIGHT
|