diff --git a/96 Word/ruby/word.rb b/96 Word/ruby/word.rb new file mode 100644 index 00000000..1f0eead5 --- /dev/null +++ b/96 Word/ruby/word.rb @@ -0,0 +1,66 @@ +#!/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