Files
basic-computer-games/96_Word/ruby/word.rb
Chris Reuter d26dbf036a Removed spaces from top-level directory names.
Spaces tend to cause annoyances in a Unix-style shell environment.
This change fixes that.
2021-11-21 18:30:21 -05:00

67 lines
1.8 KiB
Ruby

#!/usr/bin/env ruby
# WORD
#
# Converted from BASIC to Ruby
WORDS = ["DINKY", "SMOKE", "WATER", "GRASS", "TRAIN", "MIGHT",
"FIRST","CANDY", "CHAMP", "WOULD", "CLUMP", "DOPEY"]
def game_loop
target_word = WORDS.sample.downcase
guess_count = 0
guess_progress = ["-"] * 5
puts "You are starting a new game..."
while true
guess_word = ""
while guess_word == ""
puts "Guess a five letter word. "
guess_word = gets.chomp
if guess_word == "?"
break
elsif !guess_word.match(/^[[:alpha:]]+$/) || guess_word.length != 5
guess_word = ""
puts "You must guess a five letter word. Start again."
end
end
guess_count += 1
if guess_word == "?"
puts "The secret word is #{target_word}"
break
else
common_letters = ""
matches = 0
5.times do |i|
5.times do |j|
if guess_word[i] == target_word[j]
matches += 1
common_letters = common_letters + guess_word[i]
guess_progress[j] = guess_word[i] if i == j
end
end
end
puts "There were #{matches} matches and the common letters were... #{common_letters}"
puts "From the exact letter matches, you know............ #{guess_progress.join}"
if guess_progress.join == guess_word
puts "You have guessed the word. It took #{guess_count} guesses!"
break
elsif matches < 2
puts "If you give up, type '?' for you next guess."
end
end
end
end
puts " " * 33 + "WORD"
puts " " * 15 + "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY\n"
puts "I am thinking of a word -- you guess it. I will give you"
puts "clues to help you get it. Good luck!!\n"
keep_playing = true
while keep_playing
game_loop
puts "\n Want to play again? "
keep_playing = gets.chomp.downcase.index("y") == 0
end