Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import Foundation
- enum Suit {
- case hearts
- case spades
- case diamonds
- case clubs
- }
- extension Suit {
- var shape: String {
- switch self {
- case .hearts: return "♥️"
- case .spades: return "♠️"
- case .diamonds: return "♦️"
- case .clubs: return "♣️"
- }
- }
- }
- struct Card {
- let suit: Suit
- let rank: Int
- }
- extension Card: CustomStringConvertible {
- var description: String {
- return
- """
- \(rank) of \(suit.shape)
- """
- }
- }
- struct Deck {
- var cards: [Card] = []
- init() {
- cards.append(contentsOf: cards(for: .hearts))
- cards.append(contentsOf: cards(for: .spades))
- cards.append(contentsOf: cards(for: .diamonds))
- cards.append(contentsOf: cards(for: .clubs))
- }
- private func cards(for suit: Suit) -> [Card] {
- return Array(1...13).map{ Card(suit: suit, rank: $0) }
- }
- func draw() -> Card? {
- let rand = Int(arc4random_uniform(UInt32(cards.count-1)))
- return cards[rand]
- }
- }
- // Tests
- let deck = Deck()
- if deck.cards.count == 52 {
- print("Pass: 52 cards in deck")
- }
- if let card = deck.draw() {
- print("Pass: Draw \(card)")
- }
Add Comment
Please, Sign In to add comment