class Towers
Attributes
difficulty[RW]
Getters and setters.
disc_num[RW]
Getters and setters.
player[RW]
Getters and setters.
towers[RW]
Getters and setters.
win[RW]
Getters and setters.
Public Class Methods
new()
click to toggle source
Constructor.
# File lib/Towers_Class.rb, line 6 def initialize @difficulty_settings = {easy: 3, medium: 5, hard: 7} end
Public Instance Methods
build_towers()
click to toggle source
Creating the 'tower' arrays based on the selected difficulty.
# 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()
click to toggle source
Get disc sizes.
# 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)
click to toggle source
Get space count per level.
# 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)
click to toggle source
Make discs using disc sizes.
# 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()
click to toggle source
Make spaces using space count.
# 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)
click to toggle source
# 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)
click to toggle source
Moving a disc from a tower.
# File lib/Towers_Class.rb, line 104 def move_disc(source,destination) @towers[destination] << @towers[source].pop end
quit?(input)
click to toggle source
Checking if the player is attempting to quit the game.
# File lib/Towers_Class.rb, line 114 def quit?(input) abort if !!(/quit/i.match(input)) end
render()
click to toggle source
Display status of the 'tower' arrays.
# 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)
click to toggle source
# File lib/Towers_Class.rb, line 14 def set_difficulty(difficulty) @difficulty = difficulty end
set_player_name(player_name)
click to toggle source
# File lib/Towers_Class.rb, line 10 def set_player_name(player_name) @player = player_name end
win?()
click to toggle source
Checking if the player has won or lost.
# File lib/Towers_Class.rb, line 109 def win? @towers[:third].length == @disc_num end