48 lines
1.2 KiB
Python
48 lines
1.2 KiB
Python
from enum import Enum
|
|
|
|
|
|
class GraphDirection(Enum):
|
|
North = (0, 1)
|
|
NorthEast = (1, 1)
|
|
East = (1, 0)
|
|
SouthEast = (1, -1)
|
|
South = (0, -1)
|
|
SouthWest = (-1, -1)
|
|
West = (-1, 0)
|
|
NorthWest = (-1, 1)
|
|
|
|
@classmethod
|
|
def values(cls):
|
|
return [
|
|
cls.North.value,
|
|
cls.NorthEast.value,
|
|
cls.East.value,
|
|
cls.SouthEast.value,
|
|
cls.South.value,
|
|
cls.SouthWest.value,
|
|
cls.West.value,
|
|
cls.NorthWest.value
|
|
]
|
|
|
|
@classmethod
|
|
def ordinal_directions(cls):
|
|
return [
|
|
cls.North,
|
|
cls.East,
|
|
cls.South,
|
|
cls.West
|
|
]
|
|
|
|
def opposite_direction(self):
|
|
return {
|
|
GraphDirection.North: GraphDirection.South,
|
|
GraphDirection.NorthEast: GraphDirection.SouthWest,
|
|
GraphDirection.East: GraphDirection.West,
|
|
GraphDirection.SouthEast: GraphDirection.NorthWest,
|
|
GraphDirection.South: GraphDirection.North,
|
|
GraphDirection.SouthWest: GraphDirection.NorthEast,
|
|
GraphDirection.West: GraphDirection.East,
|
|
GraphDirection.NorthWest: GraphDirection.SouthEast
|
|
}[self]
|
|
|