Sha256: f118b53a36fe53d03dcb112192e9ff1ef5a3a8e685b042747bbe25d2c296f59b

Contents?: true

Size: 1.64 KB

Versions: 83

Compression:

Stored size: 1.64 KB

Contents

class KlondikeSolitaire
  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
        
        def rank_text(rank)
          case rank
          when 1
            'A'
          when 11
            'J'
          when 12
            'Q'
          when 13
            'K'
          else
            rank
          end
        end
        
        def suit_text(suit)
          case suit
          when :spades
            "♠"
          when :hearts
            "♥"
          when :clubs
            "♣"
          when :diamonds
            "♦"
          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
      
      def suit_text
        self.class.suit_text(suit)
      end
      
      def rank_text
        self.class.rank_text(rank)
      end
    end
  end
end

Version data entries

83 entries across 83 versions & 1 rubygems

Version Path
glimmer-dsl-swt-4.30.1.0 samples/elaborate/klondike_solitaire/model/playing_card.rb
glimmer-dsl-swt-4.30.0.0 samples/elaborate/klondike_solitaire/model/playing_card.rb
glimmer-dsl-swt-4.29.0.0 samples/elaborate/klondike_solitaire/model/playing_card.rb
glimmer-dsl-swt-4.28.0.0 samples/elaborate/klondike_solitaire/model/playing_card.rb
glimmer-dsl-swt-4.27.0.1 samples/elaborate/klondike_solitaire/model/playing_card.rb
glimmer-dsl-swt-4.27.0.0 samples/elaborate/klondike_solitaire/model/playing_card.rb
glimmer-dsl-swt-4.26.0.1 samples/elaborate/klondike_solitaire/model/playing_card.rb
glimmer-dsl-swt-4.26.0.0 samples/elaborate/klondike_solitaire/model/playing_card.rb
glimmer-dsl-swt-4.25.0.2 samples/elaborate/klondike_solitaire/model/playing_card.rb
glimmer-dsl-swt-4.25.0.1 samples/elaborate/klondike_solitaire/model/playing_card.rb
glimmer-dsl-swt-4.25.0.0 samples/elaborate/klondike_solitaire/model/playing_card.rb
glimmer-dsl-swt-4.24.4.8 samples/elaborate/klondike_solitaire/model/playing_card.rb
glimmer-dsl-swt-4.24.4.7 samples/elaborate/klondike_solitaire/model/playing_card.rb
glimmer-dsl-swt-4.24.4.6 samples/elaborate/klondike_solitaire/model/playing_card.rb
glimmer-dsl-swt-4.24.4.5 samples/elaborate/klondike_solitaire/model/playing_card.rb
glimmer-dsl-swt-4.24.4.4 samples/elaborate/klondike_solitaire/model/playing_card.rb
glimmer-dsl-swt-4.24.4.3 samples/elaborate/klondike_solitaire/model/playing_card.rb
glimmer-dsl-swt-4.24.4.2 samples/elaborate/klondike_solitaire/model/playing_card.rb
glimmer-dsl-swt-4.24.4.1 samples/elaborate/klondike_solitaire/model/playing_card.rb
glimmer-dsl-swt-4.24.4.0 samples/elaborate/klondike_solitaire/model/playing_card.rb