Sha256: 49da01f6843a84bcd5d979fb4135cb1550e3399363d1a453998f0ffb3e8f41b8

Contents?: true

Size: 1.02 KB

Versions: 2

Compression:

Stored size: 1.02 KB

Contents

class GlimmerKlondikeSolitaire
  module Model
    class PlayingCard
      SUITS = [:spades, :hearts, :clubs, :diamonds]
      BLACK_SUITS = [:spades, :clubs]
      RED_SUITS = [:hearts, :diamonds]
      RANK_COUNT = 13
      
      class << self
        def deck
          suit_decks.flatten
        end
        
        def suit_decks
          SUITS.map do |suit|
            suit_deck(suit)
          end
        end
        
        def suit_deck(suit)
          1.upto(RANK_COUNT).map do |rank|
            new(rank, suit)
          end
        end
      end
      
      attr_reader :rank, :suit
      attr_accessor :hidden
      alias hidden? hidden
      
      def initialize(rank, suit, hidden = false)
        @rank = rank
        @suit = suit
        @hidden = hidden
      end
      
      def color
        if BLACK_SUITS.include?(suit)
          :black
        elsif RED_SUITS.include?(suit)
          :red
        end
      end
      
      def to_s
        "Playing Card #{rank}#{suit.to_s[0].upcase}"
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
glimmer_klondike_solitaire-1.1.0 app/glimmer_klondike_solitaire/model/playing_card.rb
glimmer_klondike_solitaire-1.0.1 app/glimmer_klondike_solitaire/model/playing_card.rb