Skip to content

Instantly share code, notes, and snippets.

@BrianDunlap89
Created September 22, 2015 21:09
Show Gist options
  • Select an option

  • Save BrianDunlap89/1a894e258898b60bfcfd to your computer and use it in GitHub Desktop.

Select an option

Save BrianDunlap89/1a894e258898b60bfcfd to your computer and use it in GitHub Desktop.
require "pry"
word_list = [
"chicken", "dog", "duck", "cat", "clown", "brick",
"bananas", "totalitarianism", "Wednesday", "chicanery",
"ruby", "evaluation", "consternation"
]
turn_count = 6
answer = word_list.sample.downcase
def greeting
puts "Welcome to Hangman!\n"
puts "I'm not even going to explain it."
puts "Guess a letter dummy."
end
# def refresh(answer, word_list)
# answer = word_list.sample.downcase
# end
def game_over?(turn_count, answer, guesses)
turn_count.zero? || win?(answer, guesses)
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]/]
print "Please enter a single letter from a - z"
guess = gets.chomp
end
guess
end
def make_partial(guesses, answer)
answer.chars.map do |letter|
if guesses.include?(letter)
letter
else
"_"
end
end
end
def win?(answer, guesses)
answer.chars.all? do |letter|
guesses.include?(letter)
end
# winner = true
# answer.chars.each do |letter|
# winner = false unless guesses.include?(letter)
# end
# winner
end
def take_turn(turn_count, guesses, answer)
partial_word = make_partial(guesses, answer).join
show_progress(turn_count, partial_word) # Could also do partial_word.join
prompt_player
end
def play_again?(word_list, turn_count)
puts "Would you like to play again? 'Y'es or 'N'o."
response = gets.chomp.upcase
until response == "N"
hangman(word_list.sample, turn_count)
puts "Would you like to play again? 'Y'es or 'N'o."
response = gets.chomp.upcase
end
puts "\nGoodbye!"
end
def postmortem(answer, guesses)
if win?(answer, guesses)
puts "\nNice work! You win."
else
puts "You lose! The word was #{answer}"
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
hangman(answer, turn_count)
play_again?(word_list, turn_count)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment