30 lines
954 B
Swift
30 lines
954 B
Swift
fileprivate func getDirectionalMoves(from pos: Square.Position, with dir: [(Int8, Int8)]) -> [Square.Position] {
|
|
var squares = [Square.Position]()
|
|
for i: (Int8, Int8) in dir {
|
|
var currentSquare = pos + i
|
|
while currentSquare.index != nil {
|
|
squares.append(currentSquare)
|
|
currentSquare += i
|
|
}
|
|
}
|
|
return squares
|
|
}
|
|
protocol DiagonalMoves {
|
|
func getDiagonalMoves(from pos: Square.Position) -> [Square.Position]
|
|
}
|
|
|
|
extension DiagonalMoves {
|
|
func getDiagonalMoves(from pos: Square.Position) -> [Square.Position] {
|
|
getDirectionalMoves(from: pos, with: [(1, -1), (1, 1), (-1, 1), (-1, -1)])
|
|
}
|
|
}
|
|
|
|
protocol LinearMoves {
|
|
func getLinearMoves(from pos: Square.Position) -> [Square.Position]
|
|
}
|
|
|
|
extension LinearMoves {
|
|
func getLinearMoves(from pos: Square.Position) -> [Square.Position] {
|
|
getDirectionalMoves(from: pos, with: [(1, 0), (0, 1), (-1, 0), (0, -1)])
|
|
}
|
|
} |