Class: Gamemaker::CardGame::PlayingCard
- Defined in:
- lib/gamemaker/card_game/playing_card.rb
Constant Summary collapse
- SUITS =
[:clubs, :diamonds, :hearts, :spades]
- RANKS =
[:ace, 2, 3, 4, 5, 6, 7, 8, 9, 10, :jack, :queen, :king]
- SUIT_GLYPHS =
{ clubs: "ā£", diamonds: "ā¦", hearts: "ā„", spades: "ā " }
- CARD_GLYPHS =
{ clubs: { ace: "š", 2 => "š", 3 => "š", 4 => "š", 5 => "š", 6 => "š", 7 => "š", 8 => "š", 9 => "š", 10 => "š", jack: "š", queen: "š", king: "š" }, diamonds: { ace: "š", 2 => "š", 3 => "š", 4 => "š", 5 => "š ", 6 => "š", 7 => "š", 8 => "š", 9 => "š", 10 => "š", jack: "š", queen: "š", king: "š" }, hearts: { ace: "š±", 2 => "š²", 3 => "š³", 4 => "š“", 5 => "šµ", 6 => "š¶", 7 => "š·", 8 => "šø", 9 => "š¹", 10 => "šŗ", jack: "š»", queen: "š½", king: "š¾" }, spades: { ace: "š”", 2 => "š¢", 3 => "š£", 4 => "š¤", 5 => "š„", 6 => "š¦", 7 => "š§", 8 => "šØ", 9 => "š©", 10 => "šŖ", jack: "š«", queen: "š", king: "š®" } }
Instance Attribute Summary collapse
-
#rank ⇒ Object
readonly
Returns the value of attribute rank.
-
#suit ⇒ Object
readonly
Returns the value of attribute suit.
Class Method Summary collapse
Instance Method Summary collapse
- #==(other) ⇒ Object
- #ace? ⇒ Boolean
- #as_json ⇒ Object
- #clubs? ⇒ Boolean
- #diamonds? ⇒ Boolean
- #hearts? ⇒ Boolean
-
#initialize(suit, rank) ⇒ PlayingCard
constructor
A new instance of PlayingCard.
- #jack? ⇒ Boolean
- #king? ⇒ Boolean
- #queen? ⇒ Boolean
- #spades? ⇒ Boolean
- #to_s(format = :simple) ⇒ Object
Constructor Details
#initialize(suit, rank) ⇒ PlayingCard
Returns a new instance of PlayingCard.
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/gamemaker/card_game/playing_card.rb', line 38 def initialize(suit, rank) unless SUITS.include?(suit) raise ArgumentError, "Invalid suit: #{suit.inspect}" end if Fixnum === rank && rank > 0 rank = RANKS[rank - 1] end unless RANKS.include?(rank) raise ArgumentError, "Invalid rank: #{rank.inspect}" end @suit = suit @rank = rank end |
Instance Attribute Details
#rank ⇒ Object (readonly)
Returns the value of attribute rank.
15 16 17 |
# File 'lib/gamemaker/card_game/playing_card.rb', line 15 def rank @rank end |
#suit ⇒ Object (readonly)
Returns the value of attribute suit.
15 16 17 |
# File 'lib/gamemaker/card_game/playing_card.rb', line 15 def suit @suit end |
Class Method Details
.all ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/gamemaker/card_game/playing_card.rb', line 17 def self.all cards = [] SUITS.each do |suit| RANKS.each do |rank| cards << new(suit, rank) end end cards end |
.from_json(json) ⇒ Object
29 30 31 32 33 34 35 36 |
# File 'lib/gamemaker/card_game/playing_card.rb', line 29 def self.from_json(json) suit, rank = json["suit"], json["rank"] suit = suit.to_sym rank = rank.to_sym if String === rank new(suit, rank) end |
Instance Method Details
#==(other) ⇒ Object
87 88 89 |
# File 'lib/gamemaker/card_game/playing_card.rb', line 87 def ==(other) @rank == other.rank && @suit == other.suit end |
#ace? ⇒ Boolean
71 72 73 |
# File 'lib/gamemaker/card_game/playing_card.rb', line 71 def ace? @rank == :ace end |
#as_json ⇒ Object
114 115 116 |
# File 'lib/gamemaker/card_game/playing_card.rb', line 114 def as_json(*) { suit: @suit, rank: @rank } end |
#clubs? ⇒ Boolean
55 56 57 |
# File 'lib/gamemaker/card_game/playing_card.rb', line 55 def clubs? @suit == :clubs end |
#diamonds? ⇒ Boolean
59 60 61 |
# File 'lib/gamemaker/card_game/playing_card.rb', line 59 def diamonds? @suit == :diamonds end |
#hearts? ⇒ Boolean
63 64 65 |
# File 'lib/gamemaker/card_game/playing_card.rb', line 63 def hearts? @suit == :hearts end |
#jack? ⇒ Boolean
75 76 77 |
# File 'lib/gamemaker/card_game/playing_card.rb', line 75 def jack? @rank == :jack end |
#king? ⇒ Boolean
83 84 85 |
# File 'lib/gamemaker/card_game/playing_card.rb', line 83 def king? @rank == :king end |
#queen? ⇒ Boolean
79 80 81 |
# File 'lib/gamemaker/card_game/playing_card.rb', line 79 def queen? @rank == :queen end |
#spades? ⇒ Boolean
67 68 69 |
# File 'lib/gamemaker/card_game/playing_card.rb', line 67 def spades? @suit == :spades end |
#to_s(format = :simple) ⇒ Object
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/gamemaker/card_game/playing_card.rb', line 91 def to_s(format = :simple) suit = SUIT_GLYPHS[@suit] if Fixnum === @rank rank = @rank.to_s else rank = @rank.to_s.upcase[0] end simple = suit + rank case format when :simple simple when :fancy "āāāā\nā#{simple.ljust(3,'|')}\nāāāā\n" when :glyph CARD_GLYPHS[@suit][@rank] else raise ArgumentError, "Unknown format #{format.inspect}" end end |