Created
September 22, 2015 21:09
-
-
Save BrianDunlap89/1a894e258898b60bfcfd to your computer and use it in GitHub Desktop.
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
| 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