Created
February 24, 2016 00:26
-
-
Save TonyNguyen87/fe008d1e19181b536c0f to your computer and use it in GitHub Desktop.
tony hang man homework
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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