diff --git a/CLI/CLI/main.swift b/CLI/CLI/main.swift index 494613f..68cafed 100644 --- a/CLI/CLI/main.swift +++ b/CLI/CLI/main.swift @@ -18,7 +18,7 @@ for move in rules.validMoves(board: board) { print(move) } -print("Moves for \(Player.A):") +print("Moves for \(PieceType.A):") for move in rules.validMoves(board: board, for_player: .A) { print(move) } @@ -42,7 +42,7 @@ while case .Playing(let turn) = rules.state { direction: .Bottom ) { case .Border(let at), .Piece(let at, _): - board[at] = Piece(owner: turn) + board[at] = Piece(type: turn) case .Occupied: fatalError("Occupied???") } diff --git a/CustomTypes/Sources/CustomTypes/Display.swift b/CustomTypes/Sources/CustomTypes/Display.swift index e1add0c..3b2b6a0 100644 --- a/CustomTypes/Sources/CustomTypes/Display.swift +++ b/CustomTypes/Sources/CustomTypes/Display.swift @@ -1,6 +1,6 @@ import Model -extension Player: CustomStringConvertible { +extension PieceType: CustomStringConvertible { public var description: String { switch self { case .A: @@ -17,7 +17,7 @@ extension Board: CustomStringConvertible, CustomDebugStringConvertible { for row in 0.. [Move] { - return Player.allCases.flatMap({ + return PieceType.allCases.flatMap({ player in self.validMoves(board: board, for_player: player).map({ action in Move(player: player, action: action) }) }) } - public func validMoves(board: Board, for_player player: Player) -> [Move.Action] { + public func validMoves(board: Board, for_player player: PieceType) -> [Move.Action] { var moves: [Move.Action] = []; for c in 0.. Int { - guard let of = board[center]?.owner else { return 0 } + guard let of = board[center]?.type else { return 0 } var maxLength = 0 // For each "axis" (described as one direction) @@ -135,7 +135,7 @@ public struct FourInARowRules: Rules { while true { pos = Coords(pos.col + dc, pos.row + dr) - if !board.isInBounds(pos) || board[pos]?.owner != of { break } + if !board.isInBounds(pos) || board[pos]?.type != of { break } length += 1 } } diff --git a/Model/Sources/Model/Rules/Move.swift b/Model/Sources/Model/Rules/Move.swift index 01db9b7..97b3f62 100644 --- a/Model/Sources/Model/Rules/Move.swift +++ b/Model/Sources/Model/Rules/Move.swift @@ -1,8 +1,8 @@ public struct Move: Equatable { - public let player: Player + public let player: PieceType public let action: Action - public init(player: Player, action: Action) { + public init(player: PieceType, action: Action) { self.player = player self.action = action } diff --git a/Model/Sources/Model/Rules/Rules.swift b/Model/Sources/Model/Rules/Rules.swift index 6937d79..b55fe59 100644 --- a/Model/Sources/Model/Rules/Rules.swift +++ b/Model/Sources/Model/Rules/Rules.swift @@ -11,13 +11,13 @@ public protocol Rules { func validMoves(board: Board) -> [Move] - func validMoves(board: Board, for_player player: Player) -> [Move.Action] + func validMoves(board: Board, for_player player: PieceType) -> [Move.Action] mutating func onMoveDone(move: Move, board: Board) -> Void } public enum GameState: Equatable { - case Playing(turn: Player) + case Playing(turn: PieceType) - case Finished(winner: Player?) + case Finished(winner: PieceType?) } diff --git a/Model/Sources/Model/Rules/TicTacToeRules.swift b/Model/Sources/Model/Rules/TicTacToeRules.swift index 3d5a61e..03c9195 100644 --- a/Model/Sources/Model/Rules/TicTacToeRules.swift +++ b/Model/Sources/Model/Rules/TicTacToeRules.swift @@ -16,8 +16,8 @@ public struct TicTacToeRules: Rules { } public func isValid(board: Board) -> Bool { - abs(board.countPieces(filter: { p in p.owner == .A }) - - board.countPieces(filter: { p in p.owner == .B })) <= 1 + abs(board.countPieces(filter: { p in p.type == .A }) - + board.countPieces(filter: { p in p.type == .B })) <= 1 } public func isValid(board: Board, move: Move) -> Bool { @@ -38,15 +38,15 @@ public struct TicTacToeRules: Rules { return self.validMoves(board: board, for_player: player).map { Move(player: player, action: $0) } } - private static func nextPlayer(board: Board) -> Player { - if board.countPieces(filter: { p in p.owner == .A }) > board.countPieces(filter: { p in p.owner == .B }) { + private static func nextPlayer(board: Board) -> PieceType { + if board.countPieces(filter: { p in p.type == .A }) > board.countPieces(filter: { p in p.type == .B }) { .B } else { .A } } - public func validMoves(board: Board, for_player player: Player) -> [Move.Action] { + public func validMoves(board: Board, for_player player: PieceType) -> [Move.Action] { var moves: [Move.Action] = [] for col in 0..