Created
May 11, 2016 00:24
-
-
Save kingcons/f7417af391c0a1f0855522393a74584d to your computer and use it in GitHub Desktop.
May Crash Course
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 | |
=begin | |
Anything that goes in here is just normal text. | |
Data in Hangman | |
======== | |
* word list/dictionary (array of strings) | |
* answer (string) | |
* letters guessed (array of strings) | |
* count incorrect guesses (integer / number) | |
Behavior in Hangman | |
======== | |
* greet the player | |
* pick a random word | |
* until the game is over ... | |
* show the player the unfinished word | |
* let them guess a new letter | |
* tell them how the game ended | |
=end | |
word_list = [ | |
"blank", "dinosaur", "color", "soft", | |
"tired", "caffeine", "barrel", "italian", | |
"pizza", "skirmish", "airplane", "junction", | |
"antidisestablishmentarianism", "bourbon" | |
] | |
def greeting | |
puts "Welcome to Hangman." | |
puts "I'm too lazy to explain the rules. Just guess some letters." | |
end | |
# def add(x, y) | |
# x + y | |
# end | |
# puts add(4, 7) | |
# age = 29 | |
# height = 67 | |
# puts add(age, height) | |
def lose?(turns) | |
turns == 0 | |
end | |
def win?(answer, guesses) | |
winner = true | |
answer.chars.each do |l| | |
if !guesses.include?(l) | |
winner = false | |
end | |
end | |
winner | |
end | |
def game_over?(answer, guesses, turns) | |
win?(answer, guesses) || lose?(turns) | |
end | |
def intermediate_word(answer, guesses) | |
letters = answer.chars | |
letters.map! do |l| | |
if guesses.include?(l) | |
l | |
else | |
"-" | |
end | |
end | |
letters.join | |
end | |
def show_game(answer, guesses, turns) | |
puts | |
puts "You have #{turns} left." | |
puts "You've already guessed: #{guesses.join(", ")}" | |
puts "The word is: #{intermediate_word(answer, guesses)}" | |
puts | |
end | |
def get_guess | |
puts "Please guess a letter and press enter." | |
guess = gets.chomp | |
end | |
puts "intermediate word('cookies', 'c,o,i,z') should be 'coo-i---'" | |
answer = "cookies" | |
guesses = ["c", "o", "i", "z"] | |
intermediate = intermediate_word(answer, guesses) | |
result = if intermediate == "coo-i---" | |
"passed" | |
else | |
"failed" | |
end | |
puts "test #{result}" | |
def hangman(word_list) | |
greeting | |
guesses = [] | |
turns_left = 8 | |
answer = word_list.sample | |
until game_over?(answer, guesses, turns_left) | |
show_game(answer, guesses, turns_left) | |
guess = get_guess | |
guesses.push(guess) | |
unless answer.include?(guess) | |
turns_left -= 1 | |
end | |
end | |
postmortem | |
end | |
hangman(word_list) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment