class Game
Class to hold all main game elements and behaviour
Attributes
guess_logic[RW]
player[RW]
word_to_guess[RW]
Public Class Methods
new()
click to toggle source
# File lib/game.rb, line 19 def initialize @player = nil @word_to_guess = word @guess_logic = GuessLogic.new(word_to_guess) end
Public Instance Methods
guess()
click to toggle source
# File lib/game.rb, line 56 def guess loop do Display.beginning_of_guess_round(guess_logic) guess = Guess.new($stdin.gets, word_to_guess) Display.validation_errors(guess.errors) redo unless guess.valid? full_word_check(guess) if guess_logic.full_word_guess?(guess) guess_logic.compare(guess) Display.end_of_guess_round(guess_logic) break end end
main_game_loop()
click to toggle source
# File lib/game.rb, line 33 def main_game_loop loop do Gallows::GALLOWS[guess_logic.incorrect_guesses] # puts word_to_guess.word TESTING guess victory if win? defeat if game_over? GameSave.save(self) end end
player_setup()
click to toggle source
# File lib/game.rb, line 44 def player_setup loop do Display.enter_name player_name = PlayerName.new($stdin.gets) Display.validation_errors(player_name.errors) redo unless player_name.valid? self.player = Player.new(player_name.answer) Display.thank_player(player) break end end
start()
click to toggle source
# File lib/game.rb, line 25 def start welcome load_game instructions player_setup main_game_loop end
Private Instance Methods
defeat()
click to toggle source
# File lib/game.rb, line 117 def defeat Display.defeat(word_to_guess) reload end
full_word_check(guess)
click to toggle source
# File lib/game.rb, line 91 def full_word_check(guess) if guess_logic.correct_word?(guess) victory else defeat end end
game_over?()
click to toggle source
# File lib/game.rb, line 104 def game_over? guess_logic.incorrect_guesses > 5 end
instructions()
click to toggle source
# File lib/game.rb, line 75 def instructions Display.instruction_intro response = Answer.new($stdin.gets) Display.instructions if response.answer == 'i' end
load_game()
click to toggle source
# File lib/game.rb, line 81 def load_game Display.load_game response = Answer.new($stdin.gets) begin GameSave.load.main_game_loop if response.answer == 'load' rescue StandardError puts 'No current save game.' end end
reload()
click to toggle source
# File lib/game.rb, line 122 def reload Display.play_again answer = $stdin.gets.chomp.downcase if answer == 'yes' Game.new.main_game_loop else Display.leave exit end end
victory()
click to toggle source
# File lib/game.rb, line 112 def victory Display.victory(word_to_guess) reload end
welcome()
click to toggle source
# File lib/game.rb, line 71 def welcome Display.welcome_message end
win?()
click to toggle source
# File lib/game.rb, line 108 def win? guess_logic.guessed_word == word_to_guess.word end
word()
click to toggle source
# File lib/game.rb, line 99 def word dictionary = Dictionary.new('words.txt') WordToGuess.new(dictionary.word) end