Ruby version for Hello

This commit is contained in:
John Lloyd Serrano
2022-04-08 16:11:27 +08:00
parent 5acc1ffdea
commit 8b0c93cfe8

191
45_Hello/ruby/hello.rb Normal file
View File

@@ -0,0 +1,191 @@
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