Skip to content

Instantly share code, notes, and snippets.

@kingcons
Created May 11, 2016 00:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kingcons/f7417af391c0a1f0855522393a74584d to your computer and use it in GitHub Desktop.
Save kingcons/f7417af391c0a1f0855522393a74584d to your computer and use it in GitHub Desktop.
May Crash Course
## 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