54 lines
1.8 KiB
Swift
54 lines
1.8 KiB
Swift
//
|
|
// BoardExample.swift
|
|
// LifeGameApp
|
|
//
|
|
// Created by Yusuke Hosonuma on 2020/08/25.
|
|
//
|
|
|
|
import LifeGame
|
|
|
|
// Note:
|
|
// Widgetのプレースホルダなど、固定時間での表示が望ましいケースで表示例として利用すること。
|
|
// (Widget専用にしちゃってもよいかも?)
|
|
|
|
public enum BoardExample: CaseIterable {
|
|
public struct Data {
|
|
public var title: String
|
|
public var board: Board<Cell>
|
|
}
|
|
|
|
case butterfly
|
|
case cross
|
|
case monolith
|
|
case nebura
|
|
|
|
public var data: Data {
|
|
switch self {
|
|
case .butterfly:
|
|
return Data(
|
|
title: "Butterfly",
|
|
board: Board(size: 4, cells: cells([1,0,0,0,1,1,0,0,1,0,1,0,0,1,1,1]))
|
|
)
|
|
case .cross:
|
|
return Data(
|
|
title: "Cross",
|
|
board: Board(size: 8, cells: cells([0,0,1,1,1,1,0,0,0,0,1,0,0,1,0,0,1,1,1,0,0,1,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,0,0,1,1,1,0,0,1,0,0,1,0,0,0,0,1,1,1,1,0,0]))
|
|
)
|
|
case .monolith:
|
|
return Data(
|
|
title: "Monolith",
|
|
board: Board(size: 11, cells: cells([1,1,0,1,1,0,1,1,0,1,1,1,1,0,1,1,0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,1,1,0,1,1,1,1,0,1,1,0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,1,1,0,1,1,1,1,0,1,1,0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,1,1,0,1,1,1,1,0,1,1,0,1,1,0,1,1]))
|
|
)
|
|
case .nebura:
|
|
return Data(
|
|
title: "Nebura",
|
|
board: Board(size: 9, cells: cells([1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,1,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1]))
|
|
)
|
|
}
|
|
}
|
|
|
|
private func cells(_ rawCells: [Int]) -> [Cell] {
|
|
rawCells.map { $0 == 1 ? Cell.alive : Cell.die }
|
|
}
|
|
}
|