mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2025-12-21 23:00:43 -08:00
191 lines
5.6 KiB
Ruby
191 lines
5.6 KiB
Ruby
class Hello
|
|
def start
|
|
puts "HELLO. MY NAME IS CREATIVE COMPUTER.\n\n"
|
|
print "WHAT'S YOUR NAME? "
|
|
user_name = gets.chomp!
|
|
|
|
ask_enjoy_question(user_name)
|
|
|
|
ask_question_loop(user_name)
|
|
|
|
isHonest = ask_for_fee(user_name)
|
|
|
|
if isHonest
|
|
happy_goodbye(user_name)
|
|
else
|
|
unhappy_goodbye(user_name)
|
|
end
|
|
end
|
|
private
|
|
def get_yes_or_no
|
|
msg = gets.chomp!
|
|
if msg.upcase() == "YES"
|
|
return true, true, msg
|
|
elsif msg.upcase() == "NO"
|
|
return true, false, msg
|
|
else
|
|
return false, false, msg
|
|
end
|
|
end
|
|
|
|
def ask_enjoy_question user_name
|
|
print "\nHI THERE, #{user_name}, ARE YOU ENJOYING YOURSELF HERE? "
|
|
|
|
while true
|
|
valid, value, msg = get_yes_or_no()
|
|
|
|
if valid
|
|
if value
|
|
puts "\nI'M GLAD TO HEAR THAT, #{user_name}."
|
|
break
|
|
else
|
|
puts "\nOH, I'M SORRY TO HEAR THAT, #{user_name}. MAYBE WE CAN"
|
|
puts "BRIGHTEN UP YOUR VISIT A BIT."
|
|
break
|
|
end
|
|
else
|
|
puts "\n#{user_name}, I DON'T UNDERSTAND YOUR ANSWER OF '#{msg}'."
|
|
print "PLEASE ANSWER 'YES' OR 'NO'. DO YOU LIKE IT HERE? "
|
|
end
|
|
end
|
|
end
|
|
|
|
def prompt_for_problems user_name
|
|
puts "\nSAY, #{user_name}, I CAN SOLVE ALL KINDS OF PROBLEMS EXCEPT"
|
|
puts "THOSE DEALING WITH GREECE. WHAT KIND OF PROBLEMS DO"
|
|
print "YOU HAVE? (ANSWER SEX, HEALTH, MONEY, OR JOB) "
|
|
|
|
problem_type = gets.chomp!
|
|
return problem_type
|
|
end
|
|
|
|
def prompt_too_much_or_too_little
|
|
answer = gets.chomp!
|
|
if answer.upcase() == "TOO MUCH"
|
|
return true, true
|
|
elsif answer.upcase() == "TOO LITTLE"
|
|
return true, false
|
|
else
|
|
return false, false
|
|
end
|
|
end
|
|
|
|
def solve_sex_problem user_name
|
|
print "\nIS YOUR PROBLEM TOO MUCH OR TOO LITTLE? "
|
|
while true
|
|
valid, too_much = prompt_too_much_or_too_little()
|
|
if valid
|
|
if too_much
|
|
puts "\nYOU CALL THAT A PROBLEM?!! I SHOULD HAVE SUCH PROBLEMS!"
|
|
puts "IF IT BOTHERS YOU, #{user_name}, TAKE A COLD SHOWER."
|
|
break
|
|
else
|
|
puts "\nWHY ARE YOU HERE IN SUFFERN, #{user_name}? YOU SHOULD BE"
|
|
puts "IN TOKYO OR NEW YORK OR AMSTERDAM OR SOMEPLACE WITH SOME"
|
|
puts "REAL ACTION."
|
|
break
|
|
end
|
|
else
|
|
puts "\nDON'T GET ALL SHOOK, #{user_name}, JUST ANSWER THE QUESTION"
|
|
print "WITH 'TOO MUCH' OR 'TOO LITTLE'. WHICH IS IT? "
|
|
end
|
|
end
|
|
end
|
|
|
|
def solve_health_problem user_name
|
|
puts "\nMY ADVICE TO YOU #{user_name} IS:"
|
|
puts " 1. TAKE TWO ASPRIN"
|
|
puts " 2. DRINK PLENTY OF FLUIDS (ORANGE JUICE, NOT BEER!)"
|
|
puts " 3. GO TO BED (ALONE)"
|
|
end
|
|
|
|
def solve_money_problem user_name
|
|
puts "\nSORRY, #{user_name}, I'M BROKE TOO. WHY DON'T YOU SELL"
|
|
puts "ENCYCLOPEADIAS OR MARRY SOMEONE RICH OR STOP EATING"
|
|
puts "SO YOU WON'T NEED SO MUCH MONEY?"
|
|
end
|
|
|
|
def solve_job_problem user_name
|
|
puts "\nI CAN SYMPATHIZE WITH YOU #{user_name}. I HAVE TO WORK"
|
|
puts "VERY LONG HOURS FOR NO PAY -- AND SOME OF MY BOSSES"
|
|
puts "REALLY BEAT ON MY KEYBOARD. MY ADVICE TO YOU, #{user_name},"
|
|
puts "IS TO OPEN A RETAIL COMPUTER STORE. IT'S GREAT FUN."
|
|
end
|
|
|
|
def alert_unknown_problem_type user_name, problem_type
|
|
puts "\nOH, #{user_name}, YOUR ANSWER OF #{problem_type} IS GREEK TO ME."
|
|
end
|
|
|
|
def ask_question_loop user_name
|
|
while true
|
|
problem_type = prompt_for_problems(user_name)
|
|
if problem_type == "SEX"
|
|
solve_sex_problem(user_name)
|
|
elsif problem_type == "HEALTH"
|
|
solve_health_problem(user_name)
|
|
elsif problem_type == "MONEY"
|
|
solve_money_problem(user_name)
|
|
elsif problem_type == "JOB"
|
|
solve_job_problem(user_name)
|
|
else
|
|
alert_unknown_problem_type(user_name, problem_type)
|
|
end
|
|
|
|
while true
|
|
print "\nANY MORE PROBLEMS YOU WANT SOLVED, #{user_name}? "
|
|
|
|
valid, value, msg = get_yes_or_no()
|
|
if valid
|
|
if value
|
|
puts "\nWHAT KIND (SEX, MONEY, HEALTH, JOB)"
|
|
break
|
|
else
|
|
return
|
|
end
|
|
else
|
|
puts "\nJUST A SIMPLE 'YES' OR 'NO' PLEASE, #{user_name}."
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
def ask_for_fee user_name
|
|
puts "\nTHAT WILL BE $5.00 FOR THE ADVICE, #{user_name}."
|
|
puts "PLEASE LEAVE THE MONEY ON THE TERMINAL."
|
|
sleep(3)
|
|
print "\n\nDID YOU LEAVE THE MONEY? "
|
|
|
|
while true
|
|
valid, value, msg = get_yes_or_no()
|
|
if valid
|
|
if value
|
|
puts "\nHEY, #{user_name}, YOU LEFT NO MONEY AT ALL!"
|
|
puts "YOU ARE CHEATING ME OUT OF MY HARD-EARNED LIVING."
|
|
puts "\nWHAT A RIP OFF, #{user_name}!!!"
|
|
return false
|
|
else
|
|
puts "\nTHAT'S HONEST, #{user_name}, BUT HOW DO YOU EXPECT"
|
|
puts "ME TO GO ON WITH MY PSYCHOLOGY STUDIES IF MY PATIENTS"
|
|
puts "DON'T PAY THEIR BILLS?"
|
|
return true
|
|
end
|
|
else
|
|
puts "\nYOUR ANSWER OF '#{msg}' CONFUSES ME, #{user_name}."
|
|
print "PLEASE RESPOND WITH 'YES' or 'NO'. "
|
|
end
|
|
end
|
|
end
|
|
|
|
def unhappy_goodbye user_name
|
|
puts "\nTAKE A WALK, #{user_name}.\n\n"
|
|
end
|
|
|
|
def happy_goodbye user_name
|
|
puts "\nNICE MEETING YOU, #{user_name}, HAVE A NICE DAY."
|
|
end
|
|
end
|
|
|
|
if __FILE__ == $0
|
|
hello = Hello.new
|
|
hello.start()
|
|
end |