Class: GamesParadise::Solitaire::Solitaire

Inherits:
Base
  • Object
show all
Defined in:
lib/games_paradise/solitaire/solitaire.rb

Overview

GamesParadise::Solitaire::Solitaire

Constant Summary collapse

N_DISTINCT_CARDS =
#

N_DISTINCT_CARDS

Specify how many cards are in a given Solitaire deck.

#
52
ARRAY_AVAILABLE_RANKS =
#

ARRAY_AVAILABLE_RANKS

#
%w(
   Ace
   2
   3
   4
   5
   6
   7
   8
   9
  10
  Jack
  Queen
  King
)

Constants inherited from Base

Base::CONTROL_C_CODE, Base::N

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#cat, #commandline_arguments?, #efancy, #eparse, #first_argument?, #forestgreen, #gold, #lightblue, #lightgreen, #mediumorchid, #mediumslateblue, #opnn, #peru, #register_sigint, #rev, #royalblue, #set_commandline_arguments, #sfile, #steelblue, #teal, #tomato, #yellow

Methods included from BaseModule

#cliner, #commandline_arguments?, #first_argument?, #infer_the_namespace, #namespace?, #rename_file, #reset_the_internal_hash, #return_pwd, #set_commandline_arguments

Constructor Details

#initialize(commandline_arguments = nil, run_already = true) ⇒ Solitaire

#

initialize

#


76
77
78
79
80
81
82
83
84
85
86
# File 'lib/games_paradise/solitaire/solitaire.rb', line 76

def initialize(
    commandline_arguments = nil,
    run_already           = true
  )
  reset
  set_commandline_arguments(
    commandline_arguments
  )
  GamesParadise::Solitaire::Solitaire.set_solitaire(self)
  run if run_already
end

Class Method Details

.[](i = '') ⇒ Object

#

GamesParadise::Solitaire[]

#


211
212
213
# File 'lib/games_paradise/solitaire/solitaire.rb', line 211

def self.[](i = '')
  new(i)
end

.set_solitaire(i) ⇒ Object

#

Solitaire.set_solitaire

#


62
63
64
# File 'lib/games_paradise/solitaire/solitaire.rb', line 62

def self.set_solitaire(i)
  @solitaire = i
end

.solitaire?Boolean

#

GamesParadise::Solitaire::Solitaire.solitaire?

#

Returns:

  • (Boolean)


69
70
71
# File 'lib/games_paradise/solitaire/solitaire.rb', line 69

def self.solitaire?
  @solitaire
end

Instance Method Details

#array_a_full_deck?Boolean Also known as: remaining_cards?

#

array_a_full_deck?

#

Returns:

  • (Boolean)


154
155
156
# File 'lib/games_paradise/solitaire/solitaire.rb', line 154

def array_a_full_deck?
  @array_a_full_deck
end

#array_stacks?Boolean Also known as: stacks?

#

array_stacks?

#

Returns:

  • (Boolean)


197
198
199
# File 'lib/games_paradise/solitaire/solitaire.rb', line 197

def array_stacks?
  @array_stacks
end

#club?Boolean

#

club?

#

Returns:

  • (Boolean)


136
137
138
# File 'lib/games_paradise/solitaire/solitaire.rb', line 136

def club?
  CARD_CLUBS
end

#diamond?Boolean

#

diamond?

#

Returns:

  • (Boolean)


129
130
131
# File 'lib/games_paradise/solitaire/solitaire.rb', line 129

def diamond?
  CARD_DIAMONDS
end

#do_create_the_stacksObject

#

do_create_the_stacks

#


183
184
185
186
187
188
189
190
191
192
# File 'lib/games_paradise/solitaire/solitaire.rb', line 183

def do_create_the_stacks
  @array_stacks = []
  @use_n_piles.times {|n_iteration| n_iteration += 1
    new_array = []
    n_iteration.times {
      new_array << draw_a_random_card
    }
    @array_stacks << new_array
  }
end

#draw_a_random_cardObject

#

draw_a_random_card

#


168
169
170
171
# File 'lib/games_paradise/solitaire/solitaire.rb', line 168

def draw_a_random_card
  @array_a_full_deck.shuffle!
  return @array_a_full_deck.pop
end

#heart?Boolean

#

heart?

#

Returns:

  • (Boolean)


115
116
117
# File 'lib/games_paradise/solitaire/solitaire.rb', line 115

def heart?
  CARD_HEARTS
end

#populate_the_array_a_full_deckObject

#

populate_the_array_a_full_deck

#


143
144
145
146
147
148
149
# File 'lib/games_paradise/solitaire/solitaire.rb', line 143

def populate_the_array_a_full_deck
  proper_order_of_the_four_ranks?.each {|card_type|
    ARRAY_AVAILABLE_RANKS.each {|entry|
      @array_a_full_deck << Card.new("#{card_type}#{entry}")
    }
  }
end

#proper_order_of_the_four_ranks?Boolean

#

proper_order_of_the_four_ranks?

#

Returns:

  • (Boolean)


108
109
110
# File 'lib/games_paradise/solitaire/solitaire.rb', line 108

def proper_order_of_the_four_ranks?
  [heart?, spade?, diamond?, club?]
end

#resetObject

#

reset (reset tag)

#


91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/games_paradise/solitaire/solitaire.rb', line 91

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # === @array_a_full_deck
  # ======================================================================= #
  @array_a_full_deck = []
  populate_the_array_a_full_deck
  # ======================================================================= #
  # === @use_n_piles
  # ======================================================================= #
  @use_n_piles = 7
end

#return_a_random_cardObject

#

return_a_random_card

#


161
162
163
# File 'lib/games_paradise/solitaire/solitaire.rb', line 161

def return_a_random_card
  @array_a_full_deck.sample
end

#runObject

#

run (run tag)

#


176
177
178
# File 'lib/games_paradise/solitaire/solitaire.rb', line 176

def run
  do_create_the_stacks
end

#spade?Boolean

#

spade?

#

Returns:

  • (Boolean)


122
123
124
# File 'lib/games_paradise/solitaire/solitaire.rb', line 122

def spade?
  CARD_SPADES
end

#stack_number(i) ⇒ Object

#

stack_number

#


204
205
206
# File 'lib/games_paradise/solitaire/solitaire.rb', line 204

def stack_number(i)
  @array_stacks[i.to_i - 1 ]
end