mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2025-12-23 15:37:51 -08:00
Merge pull request #135 from ibrahimalbarghouthi/word
Converted 'Word' to ruby
This commit is contained in:
66
96 Word/ruby/word.rb
Normal file
66
96 Word/ruby/word.rb
Normal file
@@ -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
|
||||||
Reference in New Issue
Block a user