Complete native rewrite of the web-based SoliCards game as a SwiftUI multiplatform app targeting iOS 17+, iPadOS 17+, and macOS 14+. Three solitaire variants (Klondike, Spider, FreeCell) with full game rules, drag & drop, smart zoom layout, 6 themes, 4 difficulty levels, SwiftData persistence, VoiceOver accessibility, and 57 unit tests. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
30 lines
772 B
Swift
30 lines
772 B
Swift
import Foundation
|
|
|
|
enum Deck {
|
|
/// Creates a standard 52-card deck, shuffled.
|
|
static func standard() -> [Card] {
|
|
var cards: [Card] = []
|
|
for suit in Suit.allCases {
|
|
for rank in Rank.allCases {
|
|
cards.append(Card(suit: suit, rank: rank))
|
|
}
|
|
}
|
|
cards.shuffle()
|
|
return cards
|
|
}
|
|
|
|
/// Creates a double deck (104 cards) for Spider solitaire, shuffled.
|
|
static func double() -> [Card] {
|
|
var cards: [Card] = []
|
|
for _ in 0..<2 {
|
|
for suit in Suit.allCases {
|
|
for rank in Rank.allCases {
|
|
cards.append(Card(suit: suit, rank: rank))
|
|
}
|
|
}
|
|
}
|
|
cards.shuffle()
|
|
return cards
|
|
}
|
|
}
|