Class: Towers
- Inherits:
-
Object
- Object
- Towers
- Defined in:
- lib/Towers_Class.rb
Instance Attribute Summary collapse
-
#difficulty ⇒ Object
Getters and setters.
-
#disc_num ⇒ Object
Getters and setters.
-
#player ⇒ Object
Getters and setters.
-
#towers ⇒ Object
Getters and setters.
-
#win ⇒ Object
Getters and setters.
Instance Method Summary collapse
-
#build_towers ⇒ Object
Creating the ‘tower’ arrays based on the selected difficulty.
-
#get_disc_sizes ⇒ Object
Get disc sizes.
-
#get_space_count(tower) ⇒ Object
Get space count per level.
-
#initialize ⇒ Towers
constructor
Constructor.
-
#make_discs(tower) ⇒ Object
Make discs using disc sizes.
-
#make_spaces ⇒ Object
Make spaces using space count.
- #make_visuals(tower) ⇒ Object
-
#move_disc(source, destination) ⇒ Object
Moving a disc from a tower.
-
#quit?(input) ⇒ Boolean
Checking if the player is attempting to quit the game.
-
#render ⇒ Object
Display status of the ‘tower’ arrays.
- #set_difficulty(difficulty) ⇒ Object
- #set_player_name(player_name) ⇒ Object
-
#win? ⇒ Boolean
Checking if the player has won or lost.
Constructor Details
#initialize ⇒ Towers
Constructor.
6 7 8 |
# File 'lib/Towers_Class.rb', line 6 def initialize @difficulty_settings = {easy: 3, medium: 5, hard: 7} end |
Instance Attribute Details
#difficulty ⇒ Object
Getters and setters.
3 4 5 |
# File 'lib/Towers_Class.rb', line 3 def difficulty @difficulty end |
#disc_num ⇒ Object
Getters and setters.
3 4 5 |
# File 'lib/Towers_Class.rb', line 3 def disc_num @disc_num end |
#player ⇒ Object
Getters and setters.
3 4 5 |
# File 'lib/Towers_Class.rb', line 3 def player @player end |
#towers ⇒ Object
Getters and setters.
3 4 5 |
# File 'lib/Towers_Class.rb', line 3 def towers @towers end |
#win ⇒ Object
Getters and setters.
3 4 5 |
# File 'lib/Towers_Class.rb', line 3 def win @win end |
Instance Method Details
#build_towers ⇒ Object
Creating the ‘tower’ arrays based on the selected difficulty.
19 20 21 22 23 24 25 |
# File 'lib/Towers_Class.rb', line 19 def build_towers puts "\nBuilding towers.." sleep 1.5 @disc_num = @difficulty_settings[@difficulty] @towers = {first: (self.get_disc_sizes).sort{|num1,num2| num2 <=> num1},\ second: [], third: []} end |
#get_disc_sizes ⇒ Object
Get disc sizes.
28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/Towers_Class.rb', line 28 def get_disc_sizes @disc_sizes = [] i = @disc_num-1 j = 0 while j < @disc_num @disc_sizes[j] = (i+1) + i i -= 1 j += 1 end @disc_sizes end |
#get_space_count(tower) ⇒ Object
Get space count per level.
41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/Towers_Class.rb', line 41 def get_space_count (tower) @space_count = [] i = @towers[tower].length-1 j = 0 while j < @towers[tower].length @space_count[j] = i i -= 1 j += 1 end @space_count end |
#make_discs(tower) ⇒ Object
Make discs using disc sizes.
54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/Towers_Class.rb', line 54 def make_discs (tower) @discs = [] @towers[tower].reverse_each do |size| disc = '' size.times do disc << '#' end @discs << disc end @discs end |
#make_spaces ⇒ Object
Make spaces using space count.
67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/Towers_Class.rb', line 67 def make_spaces @spaces = [] @space_count.each do |count| space = '' count.times do space << ' ' end @spaces << space end @spaces end |
#make_visuals(tower) ⇒ Object
79 80 81 82 83 84 85 86 87 |
# File 'lib/Towers_Class.rb', line 79 def make_visuals (tower) visuals = [] i = 0 while i < @towers[tower].length visuals << "#{@spaces[i]}#{@discs[i]}" i += 1 end visuals end |
#move_disc(source, destination) ⇒ Object
Moving a disc from a tower.
104 105 106 |
# File 'lib/Towers_Class.rb', line 104 def move_disc(source,destination) @towers[destination] << @towers[source].pop end |
#quit?(input) ⇒ Boolean
Checking if the player is attempting to quit the game.
114 115 116 |
# File 'lib/Towers_Class.rb', line 114 def quit?(input) abort if !!(/quit/i.match(input)) end |
#render ⇒ Object
Display status of the ‘tower’ arrays.
90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/Towers_Class.rb', line 90 def render output = [] @towers.keys.each do |tower| self.get_space_count(tower) self.make_discs(tower) self.make_spaces output << "\n[#{tower.upcase}]:\n" output << make_visuals(tower) output << "\n" end puts output end |
#set_difficulty(difficulty) ⇒ Object
14 15 16 |
# File 'lib/Towers_Class.rb', line 14 def set_difficulty(difficulty) @difficulty = difficulty end |
#set_player_name(player_name) ⇒ Object
10 11 12 |
# File 'lib/Towers_Class.rb', line 10 def set_player_name(player_name) @player = player_name end |
#win? ⇒ Boolean
Checking if the player has won or lost.
109 110 111 |
# File 'lib/Towers_Class.rb', line 109 def win? @towers[:third].length == @disc_num end |