Skip to content

Instantly share code, notes, and snippets.

@khawajafarooq
Created March 10, 2018 13:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save khawajafarooq/3adf2bdbd1df14fe9195d3baa4030834 to your computer and use it in GitHub Desktop.
Save khawajafarooq/3adf2bdbd1df14fe9195d3baa4030834 to your computer and use it in GitHub Desktop.
Code to play 🂠
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)")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment