Grid column numbers

Persistance
Mathieu GROUSSEAU 2 weeks ago
parent 2f7ff9bbdc
commit 1c45aa447d

@ -104,8 +104,6 @@ encoder.userInfo[.gameDecodingContext] = CodableContext()
let data = try encoder.encode(CodableGameWrapper(of: game)) let data = try encoder.encode(CodableGameWrapper(of: game))
print(String(data: data, encoding: .utf8)!)
var decoder = JSONDecoder() var decoder = JSONDecoder()
decoder.userInfo[.gameDecodingContext] = CodableContext(creatingCallbacks: { name, type in playerPrompt }) decoder.userInfo[.gameDecodingContext] = CodableContext(creatingCallbacks: { name, type in playerPrompt })
let game2 = (try decoder.decode(CodableGameWrapper.self, from: data)).game let game2 = (try decoder.decode(CodableGameWrapper.self, from: data)).game

@ -4,7 +4,18 @@ extension Board {
public func display(winCells: [Coords]) -> String { public func display(winCells: [Coords]) -> String {
var str = String() var str = String()
let rows = Self.numbers(size: self.rows)
let columns = Self.numbers(size: self.columns)
for row in 0..<self.rows { for row in 0..<self.rows {
if row == 0 {
str += String(repeating: " ", count: rows.size)
str += columns.nums.joined()
str += "\n"
}
str += rows.nums[row]
for col in 0..<self.columns { for col in 0..<self.columns {
let coord = Coords(col, row) let coord = Coords(col, row)
@ -15,7 +26,8 @@ extension Board {
case (.B, true): "🟨" case (.B, true): "🟨"
default: "" default: ""
} }
str += char
str += String(repeating: " ", count: columns.size - 2) + char
} }
str += "\n" str += "\n"
@ -23,6 +35,12 @@ extension Board {
return str return str
} }
private static func numbers(size: Int) -> (nums: [String], size: Int) {
let elems = Array((1...size).map { String($0) })
let size = max(2, elems.lazy.map { $0.count }.max() ?? 0)
return (nums: elems.map { String(repeating: " ", count: size - $0.count) + $0 }, size: size )
}
} }
extension Board: CustomStringConvertible, CustomDebugStringConvertible { extension Board: CustomStringConvertible, CustomDebugStringConvertible {

@ -115,8 +115,6 @@ public struct Event<Param> {
self.listeners.append(listener) self.listeners.append(listener)
} }
// func dynamicallyCall(withArguments args: [Int]) -> Int { return args.count }
func dynamicallyCall(withArguments args: [Param]) -> Void { func dynamicallyCall(withArguments args: [Param]) -> Void {
for param in args { for param in args {
for listener in self.listeners { for listener in self.listeners {

Loading…
Cancel
Save