Skip to content

Instantly share code, notes, and snippets.

@TonyNguyen87
Created February 24, 2016 00:26
Show Gist options
  • Save TonyNguyen87/fe008d1e19181b536c0f to your computer and use it in GitHub Desktop.
Save TonyNguyen87/fe008d1e19181b536c0f to your computer and use it in GitHub Desktop.
tony hang man homework
# Hangman 2.0
## Data/Variables in the system
# * dictionary
# * guesses
# * turn_count
# * answer
## Open Questions
# How do we show progress? letter pool (alphabet - guesses)
## Behaviors/Actions are in the system
# * greeting / rules
# * until the game over
# * show them the current game state/progress
# * ask them for a guess
# * do bookkeeping
# * tell them what happened
require "pry"
word_list = [
"puppies", "iron", "yard", "beer",
"programmers", "coffee", "whiskey", "cigarettes",
"bacon", "vices", "gambling", "star",
"wars", "motorcycle", "elbow", "ruby"
]
answer = word_list.sample
# binding.pry
def greeting
puts
puts "Welcome to Hangman!"
puts "Please guess letters and get this over with."
puts "I'm too lazy to tell you the rules."
puts
end
def win?(guesses, answer)
## TODO: Write win to correctly detect a finished game.
result = true
answer.each_char do |letter|
unless guesses.include?(letter)
result = false
end
end
result
end
def lose?(turn_count)
turn_count.zero?
# turn_count == 0
end
def game_over?(guesses, answer, turns)
win?(guesses, answer) || lose?(turns)
end
def intermediate_word(guesses, answer)
result = []
answer.each_char do |letter|
if guesses.include?(letter)
result.push(letter)
else
result.push("-")
end
end
result.join
end
def show_progress(guesses, answer, turn_count)
puts
puts "You have #{turn_count} turns left."
puts "You already guessed #{guesses.join(", ")}."
puts "The word is: #{intermediate_word(guesses, answer)}."
end
def take_turn(guesses, answer, turn_count)
guessed_letters = []
puts "Please guess a letter:"
letter = gets.chomp
while letter.to_s.include?(answer.each_char.to_s)
guessed_letters.push(letter)
puts "You already guessed that"
end
letter
end
def hangman(answer)
turn_count = 7
guesses = []
greeting
until game_over?(guesses, answer, turn_count)
show_progress(guesses, answer, turn_count)
letter = take_turn(guesses, answer, turn_count)
guesses.push(letter)
turn_count -= 1 unless answer.include?(letter)
# unless answer.include?(guess)
# turn_count -= 1
# end
# if !answer.include?(guess)
# turn_count = turn_count - 1
# end
end
postmortem(guesses, answer)
end
def postmortem(guesses, answer)
## TODO: Flesh out postmortem to tell the player
## the word and whether they won or lost.
if win?(guesses, answer)
puts "You win"
else
puts "You lose, the answer was: #{answer}. Would you like to play again? yes/no?"
text = gets.chomp
if text == "yes"
hangman(answer)
else
puts "OK BYE"
end
end
end
hangman(answer)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment