From 4a9f3bef599443e9caa414bd2fee43bfe3d2185f Mon Sep 17 00:00:00 2001 From: Kate Evans-Spitzer Date: Thu, 17 Aug 2017 14:33:35 -0700 Subject: [PATCH 1/6] create comments on intial structure --- main.rb | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 main.rb diff --git a/main.rb b/main.rb new file mode 100644 index 0000000..e07e0be --- /dev/null +++ b/main.rb @@ -0,0 +1,33 @@ +# Word Game + + +# Intro to user +# selects difficulty ? +# word bank - + # maybe in its own class maynot, + # maybe one word bank depending difficulty? +# Find word in word bank. + + +# Display game board to user + # Image/ASCII art + # Blank letter spaces + # Letters already guessed? +# Ask user to guess a letter +# Store the user input + # CHeck array for guessed + # If it's in array ask for another guess. + # If not then store in array. + # check if guess is in word. + # Update screen accordingly. + # Add letter + # take flower away (tries). +# Loop ends: + # If tries run out. + # Show a losing screed + # Or if whole word is guessed. + # Show a winning screen. + +# Ask user if they want to play again. +# if yes then loop to begining of Game +# Or no then display a thank and goodbye. From e3a847f72837de591614c23a382795fd9dee3c01 Mon Sep 17 00:00:00 2001 From: Kate Evans-Spitzer Date: Thu, 17 Aug 2017 15:26:21 -0700 Subject: [PATCH 2/6] create game-board class, take user guess --- main.rb | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) diff --git a/main.rb b/main.rb index e07e0be..242ba33 100644 --- a/main.rb +++ b/main.rb @@ -31,3 +31,92 @@ # Ask user if they want to play again. # if yes then loop to begining of Game # Or no then display a thank and goodbye. + +################################### +# Word Game +################################### +require "Faker" + +class Board + + attr_accessor :letters_guessed + attr_reader :word + + def initialize(word) + @word = word + @blank = "_" * @word.length + @letters_guessed = [] + @tries_remaining = 2 + end + + def display + puts "@ " * @tries_remaining + puts @blank + puts "Letters Guessed: #{@letters_guessed.join(' ')}" + end + + def add_letter(guess) + letter_location = @word.index(guess) + @blank[letter_location] = guess + end +end + +# Intro to user +puts "Welcome to The Star Wars Character Word Game!" + +# selects difficulty ? +# word bank - +word_bank = ["ear", "heart"] + # maybe in its own class maynot, + # maybe one word bank depending difficulty? +# Find word in word bank. +# game_word = word_bank.sample + +game_board = Board.new(word_bank.sample.upcase) + +# Display game board to user + # Image/ASCII art - + # "/////////*" + # Blank letter spaces + # Letters already guessed? + +game_board.display + +# Ask user to guess a letter + +puts "Please guess a letter: " +guess = gets.chomp.upcase +if game_board.letters_guessed.include?guess + puts "You've already guessed that!" +else + game_board.letters_guessed << guess + if game_board.word.include?guess + game_board.add_letter(guess) + else + puts "NO" + end +end + +game_board.display + + + # Check if this is a letter???? + +# Store the user input + # CHeck array for guessed + # If it's in array ask for another guess. + # If not then store in array. + # check if guess is in word. + # Update screen accordingly. + # Add letter + # take flower away (tries). + +# Loop ends: + # If tries run out. + # Show a losing screed + # Or if whole word is guessed. + # Show a winning screen. + +# Ask user if they want to play again. +# if yes then loop to begining of Game +# Or no then display a thank and goodbye. From 437b932df04801b5e869ff60245d985067cb22d6 Mon Sep 17 00:00:00 2001 From: Kate Evans-Spitzer Date: Thu, 17 Aug 2017 15:36:38 -0700 Subject: [PATCH 3/6] add loop around program --- main.rb | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/main.rb b/main.rb index 242ba33..58bda4f 100644 --- a/main.rb +++ b/main.rb @@ -39,8 +39,8 @@ class Board - attr_accessor :letters_guessed - attr_reader :word + attr_accessor :letters_guessed, :tries_remaining + attr_reader :word, :blank def initialize(word) @word = word @@ -80,25 +80,26 @@ def add_letter(guess) # Blank letter spaces # Letters already guessed? -game_board.display + while ((game_board.blank.include?"_") && (game_board.tries_remaining >= 0)) + game_board.display + + # Ask user to guess a letter + + puts "Please guess a letter: " + guess = gets.chomp.upcase + if game_board.letters_guessed.include?guess + puts "You've already guessed that!" + else + game_board.letters_guessed << guess + if game_board.word.include?guess + game_board.add_letter(guess) + else + puts "Wrong!" + game_board.tries_remaining -= 1 + end + end -# Ask user to guess a letter - -puts "Please guess a letter: " -guess = gets.chomp.upcase -if game_board.letters_guessed.include?guess - puts "You've already guessed that!" -else - game_board.letters_guessed << guess - if game_board.word.include?guess - game_board.add_letter(guess) - else - puts "NO" end -end - -game_board.display - # Check if this is a letter???? From 6ef2b81a99cb3b8c3bb5f59df809b3cc0d5c508a Mon Sep 17 00:00:00 2001 From: Kate Evans-Spitzer Date: Thu, 17 Aug 2017 16:22:15 -0700 Subject: [PATCH 4/6] add win and lose conditions --- main.rb | 60 ++++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 40 insertions(+), 20 deletions(-) diff --git a/main.rb b/main.rb index 58bda4f..ed85bfa 100644 --- a/main.rb +++ b/main.rb @@ -35,7 +35,7 @@ ################################### # Word Game ################################### -require "Faker" +# require "Faker" class Board @@ -50,9 +50,12 @@ def initialize(word) end def display - puts "@ " * @tries_remaining - puts @blank - puts "Letters Guessed: #{@letters_guessed.join(' ')}" + output = "" + output += "@ " * @tries_remaining + "\n" + output += @blank + output += "Letters Guessed: #{@letters_guessed.join(' ')}" + puts guessed_letters + return output end def add_letter(guess) @@ -62,7 +65,7 @@ def add_letter(guess) end # Intro to user -puts "Welcome to The Star Wars Character Word Game!" +puts "Welcome to Kate and Angela's Word Game!" # selects difficulty ? # word bank - @@ -79,28 +82,37 @@ def add_letter(guess) # "/////////*" # Blank letter spaces # Letters already guessed? +# - while ((game_board.blank.include?"_") && (game_board.tries_remaining >= 0)) - game_board.display - # Ask user to guess a letter +user_has_won = !(game_board.blank.include?"_") +user_has_lost = game_board.tries_remaining == 0 - puts "Please guess a letter: " - guess = gets.chomp.upcase - if game_board.letters_guessed.include?guess - puts "You've already guessed that!" +until (user_has_won || user_has_lost) + + puts game_board.display + + # Ask user to guess a letter + + puts "Please guess a letter: " + guess = gets.chomp.upcase + if game_board.letters_guessed.include?guess + puts "You've already guessed that!" + else + game_board.letters_guessed << guess + game_board.letters_guessed.sort! + if game_board.word.include?guess + game_board.add_letter(guess) else - game_board.letters_guessed << guess - if game_board.word.include?guess - game_board.add_letter(guess) - else - puts "Wrong!" - game_board.tries_remaining -= 1 - end + puts "Wrong!" + game_board.tries_remaining -= 1 end - end + user_has_won = !(game_board.blank.include?"_") + user_has_lost = game_board.tries_remaining == 0 +end + # Check if this is a letter???? # Store the user input @@ -118,6 +130,14 @@ def add_letter(guess) # Or if whole word is guessed. # Show a winning screen. +if user_has_won + puts "You win!!!!" +end + +if user_has_lost + puts "Sorry! You lost :(" +end + # Ask user if they want to play again. # if yes then loop to begining of Game # Or no then display a thank and goodbye. From 7ead885542b23149b88031858bf74d25d10311f3 Mon Sep 17 00:00:00 2001 From: Kate Evans-Spitzer Date: Thu, 17 Aug 2017 16:47:09 -0700 Subject: [PATCH 5/6] made ascii art beautiful --- main.rb | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/main.rb b/main.rb index ed85bfa..e470346 100644 --- a/main.rb +++ b/main.rb @@ -46,15 +46,44 @@ def initialize(word) @word = word @blank = "_" * @word.length @letters_guessed = [] - @tries_remaining = 2 + @tries_remaining = 4 + @tries_pictures = [ + " + _, + .-'_| + _| (_| + (_| + ", + " + _, + .-'_| , + _| (_| _|\\ + (_| (_| + ", + " + _, _, + .-'_| , .-'_| + _| (_| _|\\ _| (_| + (_| (_| (_| + ", + " + _, _, + .-'_| , .-'_| , + _| (_| _|\\ _| (_| _|\\ + (_| (_| (_| (_| + " + ] + end + + def puts_pictures + puts @tries_pictures end def display output = "" - output += "@ " * @tries_remaining + "\n" - output += @blank + output += @tries_pictures[@tries_remaining-1] + "\n" + output += @blank + "\n" output += "Letters Guessed: #{@letters_guessed.join(' ')}" - puts guessed_letters return output end @@ -70,6 +99,7 @@ def add_letter(guess) # selects difficulty ? # word bank - word_bank = ["ear", "heart"] + # maybe in its own class maynot, # maybe one word bank depending difficulty? # Find word in word bank. From bae797feb117f112981e50a96918d23056107199 Mon Sep 17 00:00:00 2001 From: Kate Evans-Spitzer Date: Fri, 18 Aug 2017 15:04:43 -0700 Subject: [PATCH 6/6] add word bank, fix multiple letters bug --- main.rb | 29 ++++++++++-- word_bank.rb | 124 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 149 insertions(+), 4 deletions(-) create mode 100644 word_bank.rb diff --git a/main.rb b/main.rb index e470346..8933428 100644 --- a/main.rb +++ b/main.rb @@ -36,6 +36,7 @@ # Word Game ################################### # require "Faker" +require_relative "word_bank" class Board @@ -87,19 +88,37 @@ def display return output end + # def add_letter(guess) + # letter_location = @word.index(guess) + # @blank[letter_location] = guess + # end + def add_letter(guess) - letter_location = @word.index(guess) - @blank[letter_location] = guess + letter_location = [] + # word = "coffee" + @word.split('').each_with_index do |letter,index| + # puts "checking #{letter}, index is #{index}" + # puts "checking if letter: #{letter} is guess: #{guess}" + if letter == guess + # puts "#{letter} is #{guess} at index #{index}" + letter_location << index + # puts "letter_location is now #{letter_location}" + end + end + letter_location.each do |index| + @blank[index] = guess + end end + end + # Intro to user puts "Welcome to Kate and Angela's Word Game!" # selects difficulty ? # word bank - -word_bank = ["ear", "heart"] - +word_bank = initialize_word_bank() # maybe in its own class maynot, # maybe one word bank depending difficulty? # Find word in word bank. @@ -161,11 +180,13 @@ def add_letter(guess) # Show a winning screen. if user_has_won + puts game_board.display puts "You win!!!!" end if user_has_lost puts "Sorry! You lost :(" + puts "The word was #{game_board.word}!" end # Ask user if they want to play again. diff --git a/word_bank.rb b/word_bank.rb new file mode 100644 index 0000000..d9b984a --- /dev/null +++ b/word_bank.rb @@ -0,0 +1,124 @@ +def initialize_word_bank + return ["ear", + "heart", + "irritate", + "lyrical", + "moor", + "copy", + "natural", + "sedate", + "dramatic", + "bruise", + "run", + "save", + "late", + "advise", + "subdued", + "class", + "release", + "protest", + "sleepy", + "dizzy", + "afraid", + "muddle", + "hissing", + "accurate", + "snake", + "doctor", + "film", + "humdrum", + "miscreant", + "damage", + "arch", + "grandiose", + "dusty", + "tan", + "include", + "bustling", + "inform", + "sofa", + "writer", + "sulky", + "strip", + "outstanding", + "subtract", + "boiling", + "shelf", + "suggest", + "wreck", + "brake", + "sprout", + "acid", + "attach", + "auspicious", + "hole", + "insect", + "excited", + "reproduce", + "encourage", + "grape", + "oceanic", + "drain", + "angry", + "ticket", + "glove", + "stick", + "winter", + "whip", + "lying", + "typical", + "ablaze", + "separate", + "shop", + "nine", + "craven", + "strengthen", + "coherent", + "rub", + "birthday", + "railway", + "ruin", + "separate", + "coat", + "verdant", + "warlike", + "puny", + "friend", + "elegant", + "quince", + "glass", + "courageous", + "cemetery", + "well-to-do", + "bump", + "store", + "thaw", + "abounding", + "press", + "liquid", + "own", + "dazzling", + "resonant", + "workable", + "unique", + "sloppy", + "tame", + "line", + "superficial", + "box", + "witty", + "alarm", + "faint", + "rebel", + "spurious", + "announce", + "murky", + "walk", + "sand", + "zoom", + "reaction", + "grass", + "knowing", + "reminiscent", + "overjoyed"] +end