From 88369289c22c7ee834b5259fc7298107e8cb3fa1 Mon Sep 17 00:00:00 2001 From: Irene D Date: Fri, 18 Aug 2017 14:59:57 -0700 Subject: [PATCH 1/3] Create main.rb --- main.rb | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 main.rb diff --git a/main.rb b/main.rb new file mode 100644 index 0000000..7caa83c --- /dev/null +++ b/main.rb @@ -0,0 +1,120 @@ +require_relative 'game' +require_relative 'word' + +all_words = ["tiger", "cat", "dog", "turtle", "horse", "lyon", "fish"] + +hangman_pics = [''' + +---+ + | | + | + | + | + | +=========''', ''' + +---+ + | | + O | + | + | + | +=========''', ''' + +---+ + | | + O | + | | + | + | +=========''', ''' + +---+ + | | + O | + /| | + | + | +=========''', ''' + +---+ + | | + O | + /|\ | + | + | +=========''', ''' + +---+ + | | + O | + /|\ | + / | + | +=========''', ''' + +---+ + | | + O | + /|\ | + / \ | + | +========='''] + +puts "WELCOME TO WORD GUESS!" +puts +puts "PRESS 1 TO START" + +game_start = gets.chomp.to_i + +while game_start == 1 + ###### NEW GAME STARTS HERE + new_words = WORD.new(all_words) + + word = new_words.choose_word + + game = GAME.new(word, hangman_pics) + # PRINTS UNDERSCORES + game.underscore + + print game.display_ascii + puts + + ####### LOOP UNTIL WORD IS COMPLETE OR IF TOTAL ERRORS = 6 ####### + until game.total_errors == 6 || game.current_guess.join == word + # DISPLAY LETTERS IN ARRAY + print game.show_letters + puts + # GET INPUT FROM USER + puts "\nPlease guess a letter" + input_letter = gets.chomp + + # MAKE SURE INPUT IS A LETTER + until game.check_if_letter(input_letter) + puts "Please enter a valid letter" + input_letter = gets.chomp + end + # COUNTER FOR GAME ERRORS + game.count_errors(input_letter) + + # MAKE SURE THAT THE LETTER WAS NOT GIVEN BEFORE + no_repeated_letter = game.check_if_guessed(input_letter) + + # PUSHING ALL GUESSED LETTERS INTO AN ARRAY + game.add_past_letters(no_repeated_letter) + + # REPLACE LETTERS + game.replace_letters(no_repeated_letter) + # DISPLAY ASCII + print game.display_ascii + puts + puts game.past_letter.join.upcase + puts + end + + if game.total_errors == 6 + puts "YOU LOSE!" + puts "THE WORD WAS ACTUALLY: #{word.upcase}" + puts "PRESS 1 TO RESTART OR OTHER KEY TO ESCAPE" + game_start = gets.chomp.to_i + else + puts "YOU WIN! \nTHE WORD WAS: #{word.upcase}" + puts "PRESS 1 TO RESTART OR OTHER KEY TO ESCAPE" + game_start = gets.chomp.to_i + end +end +puts +puts "PLEASE COME BACK AGAIN!" From 91cffd665367d83a5f76320e285ba8387b173cb9 Mon Sep 17 00:00:00 2001 From: Irene D Date: Fri, 18 Aug 2017 15:00:12 -0700 Subject: [PATCH 2/3] Create word.rb --- word.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 word.rb diff --git a/word.rb b/word.rb new file mode 100644 index 0000000..5a94d25 --- /dev/null +++ b/word.rb @@ -0,0 +1,11 @@ +class WORD + attr_accessor :words + + def initialize(words) + @words = words + end + + def choose_word + return @words.sample + end +end From b45d11cf5965ce565989f4f2fc4b25b4be9b5355 Mon Sep 17 00:00:00 2001 From: Irene D Date: Fri, 18 Aug 2017 15:00:34 -0700 Subject: [PATCH 3/3] Create game.rb --- game.rb | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 game.rb diff --git a/game.rb b/game.rb new file mode 100644 index 0000000..cdb4f12 --- /dev/null +++ b/game.rb @@ -0,0 +1,71 @@ +class GAME + attr_accessor :current_game_word, :current_guess, :past_letter, :total_errors + + def initialize(current_game_word, hangman_pics) + @current_game_word = current_game_word + @hangman_pics = hangman_pics + #@current_hangman_pic = current_hangman_pic + @current_guess = [] + @past_letter = [] # letters already said + @total_errors = 0 + end + + def underscore + @current_guess = [] + @current_game_word.length.times do + @current_guess << "_ " + end + + letters = "" + @current_guess.each do |space| + letters = space + letters + " " + end + return letters + end + + def check_if_letter(str) + # Use 'str[/[a-zA-Z]*/] == str' to let all_letters + # yield true for the empty string + str[/[a-zA-Z]+/] == str + end + + def check_if_guessed(input_letter) + while @past_letter.include? input_letter + puts "That letter has already been guessed" + puts "Please guess a letter" + input_letter = gets.chomp + end + return input_letter + end + + def add_past_letters(valid_letter) + @past_letter << valid_letter + end + + def replace_letters(no_repeated_letter) + @current_game_word.length.times do |i| + if no_repeated_letter == @current_game_word[i] + @current_guess[i] = no_repeated_letter + end + end + end + + def show_letters + nice_word = "" + @current_guess.each do |i| + nice_word = nice_word + i + " " + end + return nice_word + end + + def count_errors(input_letter) + unless @current_game_word.include? input_letter + @total_errors += 1 + end + return @total_errors + end + # + def display_ascii + return @hangman_pics[@total_errors] + end +end