Default screen with cards on it working

This commit is contained in:
2023-04-09 17:35:53 +02:00
parent 94113e80fd
commit 9a1f86156f
7 changed files with 288 additions and 27 deletions

68
Set/SetGame.swift Normal file
View File

@@ -0,0 +1,68 @@
//
// SetGame.swift
// Set
//
// Created by Oliver Hnát on 09.04.2023.
//
import Foundation
import SwiftUI
struct SetGame {
private var deck: Array<Card>
private(set) var cardsOnTable: Array<Card>
init() {
var deck = SetGame.createCards()
deck.shuffle()
let cardsOnTable = Array(deck[0..<12])
deck.removeAll { card in
cardsOnTable.contains { $0 == card }
}
self.deck = deck
self.cardsOnTable = cardsOnTable
}
private static func createCards() -> Array<SetGame.Card> {
let colors: Array<Color> = [.blue, .green, .red]
var deck: Array<SetGame.Card> = Array()
var id = 0
for symbol in CardSymbol.allCases {
for shading in CardShading.allCases {
for number in 1..<4 {
for symbolColor in colors.indices {
let newCard = SetGame.Card(id: id, shading: shading, symbol: symbol, color: colors[symbolColor], numberOnCard: number)
deck.append(newCard)
id += 1
}
}
}
}
return deck
}
mutating func newGame() {
var deck = SetGame.createCards()
deck.shuffle()
let cardsOnTable = Array(deck[0..<12])
deck.removeAll { card in
cardsOnTable.contains { $0 == card }
}
self.deck = deck
self.cardsOnTable = cardsOnTable
}
struct Card: Identifiable, Equatable {
var id: Int
var shading: CardShading
var symbol: CardSymbol
var color: Color
var isMatched: Bool = false
var isSelected: Bool = false
var numberOnCard: Int
}
}