module Chess.Board.Direction where
data Direction = Direction
{ Direction -> Int
rowDelta :: Int
, Direction -> Int
columnDelta :: Int
}
left :: Direction
left :: Direction
left = Int -> Int -> Direction
Direction Int
0 (-Int
1)
right :: Direction
right :: Direction
right = Int -> Int -> Direction
Direction Int
0 Int
1
up :: Direction
up :: Direction
up = Int -> Int -> Direction
Direction Int
1 Int
0
down :: Direction
down :: Direction
down = Int -> Int -> Direction
Direction (-Int
1) Int
0
orthogonals :: [Direction]
orthogonals :: [Direction]
orthogonals = [Direction
up, Direction
right, Direction
down, Direction
left]
diagonals :: [Direction]
diagonals :: [Direction]
diagonals =
[ Int -> Int -> Direction
Direction Int
1 (-Int
1)
, Int -> Int -> Direction
Direction Int
1 Int
1
, Int -> Int -> Direction
Direction (-Int
1) Int
1
, Int -> Int -> Direction
Direction (-Int
1) (-Int
1)
]
principals :: [Direction]
principals :: [Direction]
principals = [Direction]
orthogonals forall a. [a] -> [a] -> [a]
++ [Direction]
diagonals
jumps :: [Direction]
jumps :: [Direction]
jumps =
[ Int -> Int -> Direction
Direction Int
row Int
column
| Int
row <- [-Int
1, Int
1, Int
2, -Int
2]
, Int
column <- [-Int
1, Int
1, Int
2, -Int
2]
, Int
row forall a. Eq a => a -> a -> Bool
/= Int
column
, Int
row forall a. Eq a => a -> a -> Bool
/= -Int
column
]