Skip to content

Instantly share code, notes, and snippets.

@Joeventures
Created September 22, 2015 20:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Joeventures/6431e66e4bcaea35299c to your computer and use it in GitHub Desktop.
Save Joeventures/6431e66e4bcaea35299c to your computer and use it in GitHub Desktop.
require "pry"
word_list = [
"chicken", "duck", "dog", "cat", "clown",
"brick", "bananas", "totalitarianism",
"coffee", "metacircular", "interpreter",
"wednesday", "ruby", "evaluation", "consternation",
"chicanery"
]
turn_count = 6
answer = word_list.sample
def greeting
puts "Welcome to the game of Hangman!\n\n"
puts "I'm not even gonna explain it."
puts "Just guess letters dummy."
end
def game_over?(turn_count, answer, guesses)
## TODO
#
#binding.pry
turn_count.zero? || win?(answer, guesses) == true
end
def show_progress(turn_count, partial_word)
puts
puts "The current word is: #{partial_word}"
puts "You have #{turn_count} guesses left."
end
def prompt_player
puts
puts "Please guess a letter: "
guess = gets.chomp
until guess == guess[/[a-z]/]
puts "Only one letter, please"
guess = gets.chomp
end
guess
end
def make_partial(guesses, answer)
# blank a letter in the answer if it isn't in the guesses
answer.chars.map do |letter|
if guesses.include?(letter)
letter
else
" "
end
end
end
def take_turn(turn_count, guesses, answer)
partial_word = make_partial(guesses, answer).join
show_progress(turn_count, partial_word)
prompt_player
end
def win?(answer, guesses)
answer.chars.all? do |character|
guesses.include?(character)
end
end
def postmortem(answer, guesses)
if win?(answer, guesses)
puts "Nice work! The word was #{answer}. You win."
else
puts "The word was #{answer}. Better luck next time."
end
end
def hangman(answer, turn_count)
guesses = []
greeting
until game_over?(turn_count, answer, guesses)
guess = take_turn(turn_count, guesses, answer)
guesses.push(guess)
turn_count -= 1 unless answer.include?(guess)
end
postmortem(answer, guesses)
end
def play?
puts "Would you like to play a game? (y/n)"
ans = gets.chomp
#binding.pry
ans == "y"
end
while play? do
hangman(answer, turn_count)
answer = word_list.sample
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment