Skip to content

Instantly share code, notes, and snippets.

@manveru
Created September 22, 2010 14:14
Show Gist options
  • Save manveru/591744 to your computer and use it in GitHub Desktop.
Save manveru/591744 to your computer and use it in GitHub Desktop.
require 'readline'
require 'set'
word = File.readlines('/usr/share/dict/words').sample
letters = word.downcase.chars.to_a
seen = Hash[letters.zip(Array.new(letters.size, false))]
guessed = Set.new
lives = 6
while line = Readline.readline('guess> ', true)
char = line[/[a-z]/]
if guessed.include?(char)
puts "You guessed that already."
elsif seen.key?(char)
seen[char] = true
else
lives -= 1
end
if seen.values.all?
puts "You win!"
exit
end
guessed << char
case lives
when 6
puts(<<-ASCII)
_____________
| |
|
|
|
|
|
|
|
|
|
|
ASCII
when 5
puts(<<-ASCII)
_____________
| |
| o
| o o
| o o
| o
|
|
|
|
|
|
ASCII
when 4
puts(<<-ASCII)
_____________
| |
| o
| o o
| o o
| o
| |
| |
| |
| |
| |
| |
ASCII
when 3
puts(<<-ASCII)
_____________
| |
| o
| o o
| o o
| o
| |
| /|
| / |
| |
| |
| |
ASCII
when 2
puts(<<-ASCII)
_____________
| |
| o
| o o
| o o
| o
| |
| /|\\
| / | \\
| |
| |
| |
ASCII
when 1
puts(<<-ASCII)
_____________
| |
| o
| o o
| o o
| o
| |
| /|\\
| / | \\
| |
| /|
| / |
ASCII
when 0
puts(<<-ASCII)
_____________
| |
| o
| o o
| o o
| o
| |
| /|\\
| / | \\
| |
| /|\\
| / | \\
ASCII
puts "You lose!"
puts "The word was #{word}"
exit
end
puts letters.map{|char| seen[char] ? char : "." }.join
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment