Skip to content

Instantly share code, notes, and snippets.

@Aidan-Huang
Created June 4, 2014 10:35
Show Gist options
  • Save Aidan-Huang/e63929edcdca6b179608 to your computer and use it in GitHub Desktop.
Save Aidan-Huang/e63929edcdca6b179608 to your computer and use it in GitHub Desktop.
creates a full deck of cards
enum Rank: Int {
case Ace = 1
case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten
case Jack, Queen, King
func simpleDescription() -> String {
switch self {
case .Ace:
return "ace"
case .Jack:
return "jack"
case .Queen:
return "queen"
case .King:
return "king"
default:
return String(self.toRaw())
}
}
}
enum Suit: Int {
case Spades = 0, Hearts, Diamonds, Clubs
func simpleDescription() -> String {
switch self {
case .Spades:
return "spades"
case .Hearts:
return "hearts"
case .Diamonds:
return "diamonds"
case .Clubs:
return "clubs"
}
}
func color() -> String {
switch self {
case .Spades, .Clubs:
return "black"
case .Hearts, .Diamonds:
return "red"
}
}
}
struct Card {
var rank: Rank
var suit: Suit
func simpleDescription() -> String {
return "The \(rank.simpleDescription()) of \(suit.color()) \(suit.simpleDescription())"
}
}
func initDeck() -> Array<Card> {
var cardArray = Card[]()
var suitIndex = 0
while var suit = Suit.fromRaw(suitIndex++) {
var rankIndex = 1
while var rank = Rank.fromRaw(rankIndex++){
let card = Card(rank: rank, suit:suit)
println (card.simpleDescription())
cardArray += card
}
}
return cardArray
}
var deck = initDeck()
deck
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment