final class Bishop: Piece, DiagonalMoves { override var unicodeRepresentation: String { return color == .Black ? "♝" : "♗" } override var pseudoLegalPositions: [Square.Position] { return getDiagonalMoves(from: position) } override func isLegal(on pos: Square.Position) -> Bool { super.isLegal(on: pos) } init(with color: Color, on position: Square.Position) { super.init(kind: .Bishop, on: position, with: color) } }