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