Linear + Diagonal moves
This commit is contained in:
@@ -1,16 +1,35 @@
|
||||
public struct Square: Equatable {
|
||||
|
||||
public struct Position: Equatable {
|
||||
public let file: Int8
|
||||
public let rank: Int8
|
||||
public let file: Int8
|
||||
|
||||
public var index: Int {
|
||||
public var index: Int? {
|
||||
guard (rank > 0 && rank < 9) && (file > 0 && file < 9) else {
|
||||
return nil
|
||||
}
|
||||
return Int(8*(8-rank)+file-1)
|
||||
}
|
||||
|
||||
public static func == (lhs: Position, rhs: Position) -> Bool {
|
||||
return lhs.index == rhs.index
|
||||
}
|
||||
|
||||
public static func + (lhs: Position, rhs: Position) -> Position {
|
||||
.init(rank: lhs.rank + rhs.rank, file: lhs.file + rhs.file)
|
||||
}
|
||||
|
||||
public static func + (lhs: Position, rhs: (Int8, Int8)) -> Position {
|
||||
.init(rank: lhs.rank + rhs.0, file: lhs.file + rhs.1)
|
||||
}
|
||||
|
||||
public static func += (lhs: inout Position, rhs: Position) {
|
||||
lhs = lhs + rhs
|
||||
}
|
||||
|
||||
public static func += (lhs: inout Position, rhs: (Int8, Int8)) {
|
||||
lhs = lhs + rhs
|
||||
}
|
||||
}
|
||||
|
||||
public let position: Position
|
||||
|
||||
Reference in New Issue
Block a user