From 1ffd59e4580153bbf430aeb2075f72af39bc86e0 Mon Sep 17 00:00:00 2001 From: Severin Wiggenhorn Date: Thu, 17 Aug 2017 14:39:46 -0700 Subject: [PATCH 01/11] Initial commit --- word_guess.rb | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 word_guess.rb diff --git a/word_guess.rb b/word_guess.rb new file mode 100644 index 0000000..4cd9d9e --- /dev/null +++ b/word_guess.rb @@ -0,0 +1,31 @@ +# Create class + +class WordGuess + + + + def initialize(answer_array) + @answer = answer_array.sample.split(//) + end + + def guess + puts "Please enter the letter you'd like to guess." + guess = gets.chomp + return @answer.include?(guess) + end + + def answer + answer = @answer + return answer + end + +end + +answer_array = ["cat", "bat", "dog"] + + +word_try = WordGuess.new(answer_array) + +puts word_try.answer + +puts word_try.guess From 8e41af16124ed8a168312a5e329b1b016a52d5a0 Mon Sep 17 00:00:00 2001 From: Severin Wiggenhorn Date: Thu, 17 Aug 2017 16:23:58 -0700 Subject: [PATCH 02/11] split into two classes --- word_guess.rb | 84 +++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 71 insertions(+), 13 deletions(-) diff --git a/word_guess.rb b/word_guess.rb index 4cd9d9e..ac0f299 100644 --- a/word_guess.rb +++ b/word_guess.rb @@ -1,31 +1,89 @@ -# Create class - -class WordGuess - +# Word Class ============================= +class Game + attr_accessor :answer def initialize(answer_array) @answer = answer_array.sample.split(//) end - def guess + def play_game(guess) + @guess = Guess.new + @guess.guess_check + end + + def print_answer(guess) + # hold_answer = [] + # + # @answer.each do |check| + # if check == guess + # hold_answer << guess + # else + # hold_answer << "_ " + # end + # end + # hold_answer_string = "" + # hold_answer.each {|p| hold_answer_string << p} + # return hold_answer_string + end + + + + + # def answer + # answer = @answer + # return answer + # end + +end + +# Guess class ======================================== +class Guess + + attr_accessor :guess + + + # def guess + # + # return print_answer(guess) + # else + # print "Wrong guess!" + # end + # end + + def guess_check(guess) puts "Please enter the letter you'd like to guess." guess = gets.chomp - return @answer.include?(guess) + @guess = guess + if @answer.include?(guess) + return true + end end - def answer - answer = @answer - return answer + def wrong_guess + wrong_guesses = [] + return wrong_guesses << guess + end + + def word_storage + correct_letters = [] + if guess_check == true + correct_letters << @guess + end + end + + def counter + end end answer_array = ["cat", "bat", "dog"] +# tests =============================== +word_try = Game.new(answer_array) -word_try = WordGuess.new(answer_array) - -puts word_try.answer +puts "Welcome to our word guess game!" +puts word_try.guess_check -puts word_try.guess +# if word_try.guess From 0e50ca597011fb41e9fd60c8c3758f80e070bd32 Mon Sep 17 00:00:00 2001 From: Severin Wiggenhorn Date: Thu, 17 Aug 2017 19:12:10 -0700 Subject: [PATCH 03/11] restructued based on discussion with Dee --- word_guess.rb | 65 ++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 46 insertions(+), 19 deletions(-) diff --git a/word_guess.rb b/word_guess.rb index ac0f299..507b5ba 100644 --- a/word_guess.rb +++ b/word_guess.rb @@ -5,11 +5,29 @@ class Game def initialize(answer_array) @answer = answer_array.sample.split(//) + puts "the answer is #{@answer}" + + while running? + play_game + end + end + + + def answer + return @answer end - def play_game(guess) - @guess = Guess.new - @guess.guess_check + def play_game + guess = Guess.new + puts "Please enter the letter you'd like to guess." + input_letter = gets.chomp + is_correct_answer = guess.check(input_letter, @answer) + if is_correct_answer + guess.store_into_correct_letters(input_letter) + guess.display_progress + else + guess.add_wrong_guess + end end def print_answer(guess) @@ -40,9 +58,12 @@ def print_answer(guess) # Guess class ======================================== class Guess - attr_accessor :guess - + attr_accessor :guess, :wrong_guesses, :correct_letters + def initialize + @wrong_guesses = [] + @correct_letters = [] + end # def guess # # return print_answer(guess) @@ -51,25 +72,29 @@ class Guess # end # end - def guess_check(guess) - puts "Please enter the letter you'd like to guess." - guess = gets.chomp - @guess = guess - if @answer.include?(guess) + def check(guess, answer) + if answer.include?(guess) return true + else + return false end end - def wrong_guess - wrong_guesses = [] - return wrong_guesses << guess + def add_wrong_guess + puts "wrong guess" + return @wrong_guesses << guess end - def word_storage - correct_letters = [] - if guess_check == true - correct_letters << @guess - end + def store_into_correct_letters(guess) + puts "word storage" + @correct_letters << guess + # if guess_check == true + # correct_letters << @guess + # end + end + + def display_progress + puts @correct_letters end def counter @@ -84,6 +109,8 @@ def counter word_try = Game.new(answer_array) puts "Welcome to our word guess game!" -puts word_try.guess_check + +# word_try.play_game +# puts word_try.guess_check # if word_try.guess From 694a045a932a4b85fc23ea59193c13481f7afe98 Mon Sep 17 00:00:00 2001 From: Severin Wiggenhorn Date: Fri, 18 Aug 2017 14:18:21 -0700 Subject: [PATCH 04/11] Initial Commit --- new_word_guess.rb | 70 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 new_word_guess.rb diff --git a/new_word_guess.rb b/new_word_guess.rb new file mode 100644 index 0000000..ed05a2c --- /dev/null +++ b/new_word_guess.rb @@ -0,0 +1,70 @@ +class Game + + def initialize(answer_array) + @answer = answer_array.sample + @correct_guesses = [] + @incorrect_guesses = [] + @tries = 5 + + @answer_as_array = split_answer(@answer) + + while @tries > 0 + accept_user_guess + display + # if + end + + end + + private + + def split_answer(answer) + return answer.split(//) + end + + def accept_user_guess + puts "Please enter a letter" + user_input = gets.chomp + if @answer_as_array.include?(user_input) + @correct_guesses << user_input + else + @incorrect_guesses << user_input + @tries -= 1 + end + end + + def correct_display + display_array = "" + @answer_as_array.each do |letter| + if @correct_guesses.include? letter + display_array << letter + else + display_array << "_" + end + end + return display_array + end + + def display + puts "Correct guesses: #{correct_display}" + puts "Incorrect guesses: #{@incorrect_guesses}" + puts "You have this many tries left: #{@tries}" + end + +end + + +class Guess + + def initialize + + end + + +end + + +answer_array = ["bat"] + + +new_game = Game.new(answer_array) From 2c63cac5b7ec30602e9bfe2528ed2185f3877157 Mon Sep 17 00:00:00 2001 From: Severin Wiggenhorn Date: Fri, 18 Aug 2017 15:23:26 -0700 Subject: [PATCH 05/11] Added colorize and winning/losing functionality --- new_word_guess.rb | 53 ++++++++++++++++++++++++++++++++++++----------- 1 file changed, 41 insertions(+), 12 deletions(-) diff --git a/new_word_guess.rb b/new_word_guess.rb index ed05a2c..9bec325 100644 --- a/new_word_guess.rb +++ b/new_word_guess.rb @@ -1,21 +1,44 @@ +require 'colorize' + class Game def initialize(answer_array) + puts "Welcome to the sushi word game! If you run out of sushi before you guess the word, you lose!!".colorize(:green) @answer = answer_array.sample @correct_guesses = [] @incorrect_guesses = [] - @tries = 5 + @tries = 6 @answer_as_array = split_answer(@answer) while @tries > 0 - accept_user_guess - display - # if + if @tries > 1 + accept_user_guess + display + if correct_display == @answer + puts "~WINNER~~WINNER~~WINNER~".colorize(:light_magenta) + exit + end + + elsif @tries == 1 + puts "You LOST! You LOST! You LOST!".colorize(:light_red) + exit + end end + end + def sushi_display + <<~SUSHI + + ,'' ; ; ; ''|||\/// + ',,_;__;__;__;,'''/\\\\ + | | + '.________.' + SUSHI end + + private def split_answer(answer) @@ -24,12 +47,17 @@ def split_answer(answer) def accept_user_guess puts "Please enter a letter" - user_input = gets.chomp + user_input = gets.chomp.downcase + if @answer_as_array.include?(user_input) @correct_guesses << user_input else - @incorrect_guesses << user_input - @tries -= 1 + if @incorrect_guesses.include?(user_input) + puts "You already guessed that letter! No penalty, but try not to do it again!".colorize(:light_green) + else + @incorrect_guesses << user_input + @tries -= 1 + end end end @@ -46,9 +74,12 @@ def correct_display end def display - puts "Correct guesses: #{correct_display}" - puts "Incorrect guesses: #{@incorrect_guesses}" - puts "You have this many tries left: #{@tries}" + puts "Number of sushi pieces == number of tries remaining" + @tries.times do + print sushi_display + end + puts "Correct guesses: #{correct_display}".colorize(:light_blue) + puts "Incorrect guesses: #{@incorrect_guesses}".colorize(:red) end end @@ -63,8 +94,6 @@ def initialize end - answer_array = ["bat"] - new_game = Game.new(answer_array) From b1944f5ec9fe7061ea9d5875090148756a7f7bbc Mon Sep 17 00:00:00 2001 From: Severin Wiggenhorn Date: Fri, 18 Aug 2017 15:32:17 -0700 Subject: [PATCH 06/11] added checker to make sure user entered letter --- new_word_guess.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/new_word_guess.rb b/new_word_guess.rb index 9bec325..fdcf2c2 100644 --- a/new_word_guess.rb +++ b/new_word_guess.rb @@ -48,7 +48,10 @@ def split_answer(answer) def accept_user_guess puts "Please enter a letter" user_input = gets.chomp.downcase - + unless /([a-z])/.match(user_input) + puts "Invalid guess! Letters only please! Please try again." + user_input = gets.chomp.downcase + end if @answer_as_array.include?(user_input) @correct_guesses << user_input else From 4295998fa210f83a8693df241f9cb1177e381f9d Mon Sep 17 00:00:00 2001 From: Severin Wiggenhorn Date: Sat, 19 Aug 2017 11:40:40 -0700 Subject: [PATCH 07/11] Added randomly generated array of answers using RandomWord gem and changed formatting so screen clears between turns --- new_word_guess.rb | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/new_word_guess.rb b/new_word_guess.rb index fdcf2c2..09c736d 100644 --- a/new_word_guess.rb +++ b/new_word_guess.rb @@ -1,4 +1,5 @@ require 'colorize' +require 'random-word' class Game @@ -7,7 +8,7 @@ def initialize(answer_array) @answer = answer_array.sample @correct_guesses = [] @incorrect_guesses = [] - @tries = 6 + @tries = 7 @answer_as_array = split_answer(@answer) @@ -77,26 +78,19 @@ def correct_display end def display + puts "\e[H\e[2J" puts "Number of sushi pieces == number of tries remaining" - @tries.times do + (@tries - 1).times do print sushi_display end puts "Correct guesses: #{correct_display}".colorize(:light_blue) puts "Incorrect guesses: #{@incorrect_guesses}".colorize(:red) end - end -class Guess - - def initialize - - end - - -end +answer_array = [] -answer_array = ["bat"] +answer_array = 10.times.map { RandomWord.adjs.next.gsub('_', ' ') } new_game = Game.new(answer_array) From cbdf54b75b51ac1debaa3ac019bc9bda63cd5761 Mon Sep 17 00:00:00 2001 From: Severin Wiggenhorn Date: Sat, 19 Aug 2017 12:04:04 -0700 Subject: [PATCH 08/11] fixes issue where clear screen was ppreventing one of the messages from displaying --- new_word_guess.rb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/new_word_guess.rb b/new_word_guess.rb index 09c736d..f99fa1b 100644 --- a/new_word_guess.rb +++ b/new_word_guess.rb @@ -6,6 +6,7 @@ class Game def initialize(answer_array) puts "Welcome to the sushi word game! If you run out of sushi before you guess the word, you lose!!".colorize(:green) @answer = answer_array.sample + puts @answer @correct_guesses = [] @incorrect_guesses = [] @tries = 7 @@ -20,7 +21,6 @@ def initialize(answer_array) puts "~WINNER~~WINNER~~WINNER~".colorize(:light_magenta) exit end - elsif @tries == 1 puts "You LOST! You LOST! You LOST!".colorize(:light_red) exit @@ -55,12 +55,14 @@ def accept_user_guess end if @answer_as_array.include?(user_input) @correct_guesses << user_input + puts clear_screen else if @incorrect_guesses.include?(user_input) puts "You already guessed that letter! No penalty, but try not to do it again!".colorize(:light_green) else @incorrect_guesses << user_input @tries -= 1 + puts clear_screen end end end @@ -78,7 +80,6 @@ def correct_display end def display - puts "\e[H\e[2J" puts "Number of sushi pieces == number of tries remaining" (@tries - 1).times do print sushi_display @@ -88,6 +89,9 @@ def display end end +def clear_screen + return "\e[H\e[2J" +end answer_array = [] From 4b1a4db8ee58949ea0a74b07909e145fcf30747e Mon Sep 17 00:00:00 2001 From: Severin Wiggenhorn Date: Sat, 19 Aug 2017 12:25:38 -0700 Subject: [PATCH 09/11] added easy/hard levels --- new_word_guess.rb | 44 +++++++++++++++++++++++++++++++++----------- 1 file changed, 33 insertions(+), 11 deletions(-) diff --git a/new_word_guess.rb b/new_word_guess.rb index f99fa1b..b7036a7 100644 --- a/new_word_guess.rb +++ b/new_word_guess.rb @@ -3,21 +3,21 @@ class Game - def initialize(answer_array) - puts "Welcome to the sushi word game! If you run out of sushi before you guess the word, you lose!!".colorize(:green) - @answer = answer_array.sample - puts @answer + def initialize(answer) + + + puts answer @correct_guesses = [] @incorrect_guesses = [] @tries = 7 - @answer_as_array = split_answer(@answer) + @answer_as_array = split_answer(answer) while @tries > 0 if @tries > 1 accept_user_guess display - if correct_display == @answer + if correct_display == answer puts "~WINNER~~WINNER~~WINNER~".colorize(:light_magenta) exit end @@ -39,7 +39,6 @@ def sushi_display end - private def split_answer(answer) @@ -87,14 +86,37 @@ def display puts "Correct guesses: #{correct_display}".colorize(:light_blue) puts "Incorrect guesses: #{@incorrect_guesses}".colorize(:red) end -end def clear_screen return "\e[H\e[2J" end -answer_array = [] +end + +#freestanding welcome method +def welcome + puts "Welcome to the sushi word game! If you run out of sushi before you guess the word, you lose!!".colorize(:green) + puts "Pick your level: easy or hard:" + level = gets.chomp.downcase + unless level == "easy" || level == "hard" + puts "Invalid answer. Please enter easy or hard." + level = gets.chomp.downcase + end + + @answer = "" + easy_answer_array = ["pink", "cat", "dolphin", "picnic", "sashimi", "tuna", "nigiri", "wasabi"] + hard_answer_array = [] + hard_answer_array = 10.times.map { RandomWord.adjs.next.gsub('_', ' ') } + + if level == "easy" + @answer = easy_answer_array.sample + elsif level == "hard" + @answer = hard_answer_array.sample + end + + return @answer +end -answer_array = 10.times.map { RandomWord.adjs.next.gsub('_', ' ') } +# running program -new_game = Game.new(answer_array) +new_game = Game.new(welcome) From 07bdf1a80f2efbbfa0348a8736a13471c1f7080c Mon Sep 17 00:00:00 2001 From: Severin Wiggenhorn Date: Mon, 21 Aug 2017 10:42:27 -0700 Subject: [PATCH 10/11] making sure all changes have been committed --- new_word_guess.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new_word_guess.rb b/new_word_guess.rb index b7036a7..af16441 100644 --- a/new_word_guess.rb +++ b/new_word_guess.rb @@ -117,6 +117,6 @@ def welcome return @answer end -# running program +# running program new_game = Game.new(welcome) From 986372bc1bd656e8518ab6f33296b180dd79153f Mon Sep 17 00:00:00 2001 From: Severin Wiggenhorn Date: Mon, 21 Aug 2017 10:55:07 -0700 Subject: [PATCH 11/11] fixed formatting and commented out code that printed correct answer used for testing purposes --- new_word_guess.rb | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/new_word_guess.rb b/new_word_guess.rb index af16441..9d41b7e 100644 --- a/new_word_guess.rb +++ b/new_word_guess.rb @@ -4,9 +4,7 @@ class Game def initialize(answer) - - - puts answer + # puts answer @correct_guesses = [] @incorrect_guesses = [] @tries = 7 @@ -87,9 +85,9 @@ def display puts "Incorrect guesses: #{@incorrect_guesses}".colorize(:red) end -def clear_screen - return "\e[H\e[2J" -end + def clear_screen + return "\e[H\e[2J" + end end @@ -98,10 +96,10 @@ def welcome puts "Welcome to the sushi word game! If you run out of sushi before you guess the word, you lose!!".colorize(:green) puts "Pick your level: easy or hard:" level = gets.chomp.downcase - unless level == "easy" || level == "hard" - puts "Invalid answer. Please enter easy or hard." - level = gets.chomp.downcase - end + unless level == "easy" || level == "hard" + puts "Invalid answer. Please enter easy or hard." + level = gets.chomp.downcase + end @answer = "" easy_answer_array = ["pink", "cat", "dolphin", "picnic", "sashimi", "tuna", "nigiri", "wasabi"]