Guest User

Untitled

a guest
Mar 19th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.21 KB | None | 0 0
  1. import Foundation
  2.  
  3. enum Suit {
  4. case hearts
  5. case spades
  6. case diamonds
  7. case clubs
  8. }
  9.  
  10. extension Suit {
  11. var shape: String {
  12. switch self {
  13. case .hearts: return "♥️"
  14. case .spades: return "♠️"
  15. case .diamonds: return "♦️"
  16. case .clubs: return "♣️"
  17. }
  18. }
  19. }
  20.  
  21. struct Card {
  22. let suit: Suit
  23. let rank: Int
  24. }
  25.  
  26. extension Card: CustomStringConvertible {
  27.  
  28. var description: String {
  29. return
  30. """
  31. \(rank) of \(suit.shape)
  32. """
  33. }
  34. }
  35.  
  36. struct Deck {
  37. var cards: [Card] = []
  38.  
  39. init() {
  40. cards.append(contentsOf: cards(for: .hearts))
  41. cards.append(contentsOf: cards(for: .spades))
  42. cards.append(contentsOf: cards(for: .diamonds))
  43. cards.append(contentsOf: cards(for: .clubs))
  44. }
  45.  
  46. private func cards(for suit: Suit) -> [Card] {
  47. return Array(1...13).map{ Card(suit: suit, rank: $0) }
  48. }
  49.  
  50. func draw() -> Card? {
  51. let rand = Int(arc4random_uniform(UInt32(cards.count-1)))
  52. return cards[rand]
  53. }
  54. }
  55.  
  56. // Tests
  57. let deck = Deck()
  58.  
  59. if deck.cards.count == 52 {
  60. print("Pass: 52 cards in deck")
  61. }
  62.  
  63. if let card = deck.draw() {
  64. print("Pass: Draw \(card)")
  65. }
Add Comment
Please, Sign In to add comment