diff --git a/Connect4/connect4_lib/Sources/connect4_lib/BasicDefaultsNoDiag.swift b/Connect4/connect4_lib/Sources/connect4_lib/BasicDefaultsNoDiag.swift new file mode 100644 index 0000000..5060920 --- /dev/null +++ b/Connect4/connect4_lib/Sources/connect4_lib/BasicDefaultsNoDiag.swift @@ -0,0 +1,46 @@ +import Foundation + +public struct BasicDefaultsNoDiag : IRules { + var minNbRows: Int + + var maxNbRows: Int + + var minNbCols: Int + + var maxNbCols: Int + + var nbChipsToAlign: Int + + func isGameOver(byPlayer playerId: Int, ontGrid grid: [[Int?]]) -> (isOver: Bool, hasWinner: Bool, victoryTiles: [(Int?, Int?)]) { + + var tiles : [(Int?, Int?)] = Array(repeating: (nil, nil), count: nbChipsToAlign) + + + + /* + game over? + winner exists? + return (true, true, tiles) + else + return (true, false, tiles) (all tiles at nil) + else + return (false, false, tiles) (all tiles at nil) + */ + + return (isOver: false, hasWinner: false, victoryTiles: tiles); + } + + init?(withMinNbRows minNbRows: Int = 0, + withMaxNbRows maxNbRows: Int = 15, + withMaxNbCols minNbCols: Int = 0, + withMaxNbCols maxNbCols: Int = 15, + withNbChipsToAlign nbChipsToAlign: Int = 4) { + self.minNbRows = minNbRows + self.maxNbRows = maxNbRows + self.minNbCols = minNbCols + self.maxNbCols = maxNbCols + self.nbChipsToAlign = nbChipsToAlign + } + + +} diff --git a/Connect4/connect4_lib/Sources/connect4_lib/Board.swift b/Connect4/connect4_lib/Sources/connect4_lib/Board.swift index 717ec9c..8f06f7b 100644 --- a/Connect4/connect4_lib/Sources/connect4_lib/Board.swift +++ b/Connect4/connect4_lib/Sources/connect4_lib/Board.swift @@ -1,5 +1,6 @@ import Foundation +//TODO implement Equatable? public struct Board : CustomStringConvertible { public let nbRows: Int diff --git a/Connect4/connect4_lib/Sources/connect4_lib/IRules.swift b/Connect4/connect4_lib/Sources/connect4_lib/IRules.swift new file mode 100644 index 0000000..4661aa1 --- /dev/null +++ b/Connect4/connect4_lib/Sources/connect4_lib/IRules.swift @@ -0,0 +1,10 @@ +import Foundation + +protocol IRules { + var minNbRows: Int { get } + var maxNbRows: Int { get } + var minNbCols: Int { get } + var maxNbCols: Int { get } + var nbChipsToAlign: Int { get } + func isGameOver(byPlayer playerId: Int, ontGrid grid: [[Int?]]) -> (isOver: Bool, hasWinner: Bool, victoryTiles: [(Int?, Int?)]) +}