From a14ed6d1f7f2e5b4311fc8f5b2b7b1f25fcb187b Mon Sep 17 00:00:00 2001 From: Salome Wubeshet Date: Thu, 17 Aug 2017 14:04:36 -0700 Subject: [PATCH 1/4] create word_guess.rb --- word_guess.rb | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 word_guess.rb diff --git a/word_guess.rb b/word_guess.rb new file mode 100644 index 0000000..e69de29 From 3a4ab94ddf98b0b75fcfdbe84dd2ca064db29f4f Mon Sep 17 00:00:00 2001 From: Salome Wubeshet Date: Thu, 17 Aug 2017 14:11:29 -0700 Subject: [PATCH 2/4] create game.rb --- game.rb | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 game.rb diff --git a/game.rb b/game.rb new file mode 100644 index 0000000..e69de29 From 6dcef70ef3f6bf6d7b69a1559102cbc8e5170c70 Mon Sep 17 00:00:00 2001 From: Salome Wubeshet Date: Thu, 17 Aug 2017 17:12:15 -0700 Subject: [PATCH 3/4] update word_guess.rb and game.rb --- game.rb | 268 ++++++++++++++++++++++++++++++++++++++++++++++++++ word_guess.rb | 32 ++++++ 2 files changed, 300 insertions(+) diff --git a/game.rb b/game.rb index e69de29..8b26211 100644 --- a/game.rb +++ b/game.rb @@ -0,0 +1,268 @@ +require 'colorize' +require 'Faker' +class Game + +def initialize + @wrong_guesses = [] + @answer = Faker::Dessert.variety.downcase + @hidden_answer = @answer.delete(" ").split("").join(" ").gsub(/[a-z]/, '_') + @art =[ +" _ + \/\\ )\\ + _ __)_)__ .'`--`'. + )\\_ .-'._'-'_.'-. \/ ^ ^ \\ + .'`---`'. .'.' \/o\\'\/o\\ '.'. \\ \\\/\\\/\\\/ \/ + \/ <> <> \\ : ._: 0 :_. : \\ '------' _J_ + | A |: \\\\\/\\_\/\\\/\/ : | _\/)_ .'`---`'. + \\ <\\_\/> \/ : :\\\/\\_\/\\\/: : \/ .'`----`'.\/.'0\\ 0\\ \\ + _?_._`\"`_.'`'-:__:__:__:__:-' \/.'<\\ \/> \\: o | + .'`---`'.`` _\/( \/\\ |:,___A___,|' V===V \/ + \/.'a . a \\.'`---`'. __(_(__ \\' \\_____\/ \/'._____.' + |: ___ \/.'\/\\ \/\\ \\ .-'._'-'_.'-:.______.' _?_ + \\' \\_\/ |: ^ | .'.' (o\\'\/o) '.'. .'`\"\"\"`'. + '._____.'\\' 'vvv' \/ \/ :_\/_: A :_\\_: \\ \/ ^.^ \\ + '.__.__.' | : \\'=...='\/ : | \\ `===` \/ + \\ : :'.___.': : \/ `-------` + '-:__:__:__:__:-' + +", +" + \/\\ + _ __)_)__ + )\\_ .-'._'-'_.'-. + .'`---`'. .'.' \/o\\'\/o\\ '.'. + \/ <> <> \\ : ._: 0 :_. : \\ _J_ + | A |: \\\\\/\\_\/\\\/\/ : | _\/)_ .'`---`'. + \\ <\\_\/> \/ : :\\\/\\_\/\\\/: : \/ .'`----`'.\/.'0\\ 0\\ \\ + _?_._`\"`_.'`'-:__:__:__:__:-' \/.'<\\ \/> \\: o | + .'`---`'.`` _\/( \/\\ |:,___A___,|' V===V \/ + \/.'a . a \\.'`---`'. __(_(__ \\' \\_____\/ \/'._____.' + |: ___ \/.'\/\\ \/\\ \\ .-'._'-'_.'-:.______.' _?_ + \\' \\_\/ |: ^ | .'.' (o\\'\/o) '.'. .'`\"\"\"`'. + '._____.'\\' 'vvv' \/ \/ :_\/_: A :_\\_: \\ \/ ^.^ \\ + '.__.__.' | : \\'=...='\/ : | \\ `===` \/ + \\ : :'.___.': : \/ `-------` + '-:__:__:__:__:-' + +", +" + \/\\ + _ __)_)__ + )\\_ .-'._'-'_.'-. + .'`---`'. .'.' \/o\\'\/o\\ '.'. + \/ <> <> \\ : ._: 0 :_. : \\ _J_ + | A |: \\\\\/\\_\/\\\/\/ : | _\/)_ .'`---`'. + \\ <\\_\/> \/ : :\\\/\\_\/\\\/: : \/ .'`----`'.\/.'0\\ 0\\ \\ + '._`\"`_.'`'-:__:__:__:__:-' \/.'<\\ \/> \\: o | + `` _\/( \/\\ |:,___A___,|' V===V \/ + .'`---`'. __(_(__ \\' \\_____\/ \/'._____.' + \/.'\/\\ \/\\ \\ .-'._'-'_.'-:.______.' _?_ + |: ^ | .'.' (o\\'\/o) '.'. .'`\"\"\"`'. + \\' 'vvv' \/ \/ :_\/_: A :_\\_: \\ \/ ^.^ \\ + '.__.__.' | : \\'=...='\/ : | \\ `===` \/ + \\ : :'.___.': : \/ `-------` + '-:__:__:__:__:-' + +", +" + \/\\ + _ __)_)__ + )\\_ .-'._'-'_.'-. + .'`---`'. .'.' \/o\\'\/o\\ '.'. + \/ <> <> \\ : ._: 0 :_. : \\ + | A |: \\\\\/\\_\/\\\/\/ : | _\/)_ + \\ <\\_\/> \/ : :\\\/\\_\/\\\/: : \/ .'`----`'. + '._`\"`_.'`'-:__:__:__:__:-' \/.'<\\ \/> \\ + `` _\/( \/\\ |:,___A___,| + .'`---`'. __(_(__ \\' \\_____\/ \/ + \/.'\/\\ \/\\ \\ .-'._'-'_.'-:.______.' _?_ + |: ^ | .'.' (o\\'\/o) '.'. .'`\"\"\"`'. + \\' 'vvv' \/ \/ :_\/_: A :_\\_: \\ \/ ^.^ \\ + '.__.__.' | : \\'=...='\/ : | \\ `===` \/ + \\ : :'.___.': : \/ `-------` + '-:__:__:__:__:-' + +", +" + \/\\ + __)_)__ + .-'._'-'_.'-. + .'.' \/o\\'\/o\\ '.'. + \/ : ._: 0 :_. : \\ + | : \\\\\/\\_\/\\\/\/ : | _\/)_ + \\ : :\\\/\\_\/\\\/: : \/ .'`----`'. + '-:__:__:__:__:-' \/.'<\\ \/> \\ + _\/( \/\\ |:,___A___,| + .'`---`'. __(_(__ \\' \\_____\/ \/ + \/.'\/\\ \/\\ \\ .-'._'-'_.'-:.______.' _?_ + |: ^ | .'.' (o\\'\/o) '.'. .'`\"\"\"`'. + \\' 'vvv' \/ \/ :_\/_: A :_\\_: \\ \/ ^.^ \\ + '.__.__.' | : \\'=...='\/ : | \\ `===` \/ + \\ : :'.___.': : \/ `-------` + '-:__:__:__:__:-' + +", +" + \/\\ + __)_)__ + .-'._'-'_.'-. + .'.' \/o\\'\/o\\ '.'. + \/ : ._: 0 :_. : \\ + | : \\\\\/\\_\/\\\/\/ : | _\/)_ + \\ : :\\\/\\_\/\\\/: : \/ .'`----`'. + '-:__:__:__:__:-' \/.'<\\ \/> \\ + _\/( \/\\ |:,___A___,| + .'`---`'. __(_(__ \\' \\_____\/ \/ + \/.'\/\\ \/\\ \\ .-'._'-'_.'-:.______.' + |: ^ | .'.' (o\\'\/o) '.'. + \\' 'vvv' \/ \/ :_\/_: A :_\\_: \\ + '.__.__.' | : \\'=...='\/ : | + \\ : :'.___.': : \/ + '-:__:__:__:__:-' + +", +" + \/\\ + __)_)__ + .-'._'-'_.'-. + .'.' \/o\\'\/o\\ '.'. + \/ : ._: 0 :_. : \\ + | : \\\\\/\\_\/\\\/\/ : | _\/)_ + \\ : :\\\/\\_\/\\\/: : \/ .'`----`'. + '-:__:__:__:__:-' \/.'<\\ \/> \\ + \/\\ |:,___A___,| + __(_(__ \\' \\_____\/ \/ + .-'._'-'_.'-:.______.' + .'.' (o\\'\/o) '.'. + \/ :_\/_: A :_\\_: \\ + | : \\'=...='\/ : | + \\ : :'.___.': : \/ + '-:__:__:__:__:-' + +", +" + + + + + + _\/)_ + .'`----`'. + \/.'<\\ \/> \\ + \/\\ |:,___A___,| + __(_(__ \\' \\_____\/ \/ + .-'._'-'_.'-:.______.' + .'.' (o\\'\/o) '.'. + \/ :_\/_: A :_\\_: \\ + | : \\'=...='\/ : | + \\ : :'.___.': : \/ + '-:__:__:__:__:-' + +", +" + + + + + + + + + \/\\ + __(_(__ + .-'._'-'_.'-:. + .'.' (o\\'\/o) '.'. + \/ :_\/_: A :_\\_: \\ + | : \\'=...='\/ : | + \\ : :'.___.': : \/ + '-:__:__:__:__:-' + +", +" + + + + + + + + + + + + + + + + + +"] + @win = false + + puts "Start guessing!\n\n#{@art[0]}\n\n#{@hidden_answer}" +end + +def guess_letter(guess) +guess_result = @answer.index(guess) + if guess_result == nil # negative result + @wrong_guesses << guess unless @wrong_guesses.include?(guess) + if @wrong_guesses.length == 9 + game_result + else + puts "\n\nOops, try again!\n\n" + show_guesses + change_art + puts @hidden_answer + end + elsif guess_result >= 0 # positive result + puts "\n\nNice guess!\n" + replacement_letter = guess_result * 2 + @hidden_answer[replacement_letter] = guess + + if @hidden_answer.split.join == @answer && @wrong_guesses.length <= 9 + change_art + puts @hidden_answer + @win = true + game_result + else + show_guesses + change_art + puts @hidden_answer + end + end +end + +def change_art + select_art = @wrong_guesses.length + puts "\n#{@art[select_art].red}" +end + +def show_guesses + @wrong_guesses.each do |letter| + print "#{letter}" + end +end + +def game_result + if @win == true + puts "\n\nYOU WIN!\n\n#{@answer}" + exit + else + puts "\n\nYOU LOSE! :(\n\n#{@answer}" + exit + end +end + + def red + colorize(31) + end + + def yellow + colorize(33) + end + + def blue + colorize(34) + end + +end \ No newline at end of file diff --git a/word_guess.rb b/word_guess.rb index e69de29..c1b5d62 100644 --- a/word_guess.rb +++ b/word_guess.rb @@ -0,0 +1,32 @@ +require_relative 'game' + +puts "Do you want to play word guess? (Y or N)" + +game_answer = gets.chomp.upcase + +until game_answer == 'Y' || game_answer == 'N' + puts "That's an invalid answer" + puts "Do you want to play word guess? (Y or N)" + game_answer = gets.chomp.upcase +end + +if game_answer == 'Y' + new_game = Game.new +elsif game_answer == 'N' + exit +end + +loop do + puts "Guess a letter" + letter = gets.chomp.downcase + letter = letter[0] + check = /^[A-z]+$/.match(letter) + if check == nil + puts "that is an incorrect input, please try again" + else + new_game.guess_letter(letter) + end + +end + + From 12476efaadc65c98a3c3784dd48bcc9de7136706 Mon Sep 17 00:00:00 2001 From: Salome Wubeshet Date: Fri, 18 Aug 2017 15:27:42 -0700 Subject: [PATCH 4/4] Edit game.rb file --- game.rb | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/game.rb b/game.rb index 8b26211..8bda243 100644 --- a/game.rb +++ b/game.rb @@ -5,7 +5,10 @@ class Game def initialize @wrong_guesses = [] @answer = Faker::Dessert.variety.downcase - @hidden_answer = @answer.delete(" ").split("").join(" ").gsub(/[a-z]/, '_') + no_spaces = @answer.delete(" ") + no_split = no_spaces.split("") + @one_answer = no_split.join(" ") + @hidden_answer = @one_answer.gsub(/[a-z]/, '_') @art =[ " _ \/\\ )\\ @@ -216,10 +219,15 @@ def guess_letter(guess) end elsif guess_result >= 0 # positive result puts "\n\nNice guess!\n" - replacement_letter = guess_result * 2 - @hidden_answer[replacement_letter] = guess + answer_array = @one_answer.split('') + puts answer_array + matching_indices = answer_array.each_index.select {|i| answer_array[i] == guess } + matching_indices.each do |i| + replacement_letter = i + @hidden_answer[replacement_letter] = guess + end - if @hidden_answer.split.join == @answer && @wrong_guesses.length <= 9 + if @hidden_answer.match(/[\_]/) == nil && @wrong_guesses.length <= 9 change_art puts @hidden_answer @win = true