mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2025-12-12 07:40:50 -08:00
print_with_tab / print_with_whitespace is trivial with Python string formatting and was mostly used in only 2 lines.
195 lines
5.8 KiB
Python
195 lines
5.8 KiB
Python
"""
|
|
HELLO
|
|
|
|
A very simple "chat" bot.
|
|
|
|
Warning, the advice given here is bad.
|
|
|
|
Ported by Dave LeCompte
|
|
"""
|
|
|
|
import time
|
|
from typing import Optional, Tuple
|
|
|
|
|
|
def get_yes_or_no() -> Tuple[bool, Optional[bool], str]:
|
|
msg = input()
|
|
if msg.upper() == "YES":
|
|
return True, True, msg
|
|
elif msg.upper() == "NO":
|
|
return True, False, msg
|
|
else:
|
|
return False, None, msg
|
|
|
|
|
|
def ask_enjoy_question(user_name):
|
|
print(f"HI THERE, {user_name}, ARE YOU ENJOYING YOURSELF HERE?")
|
|
|
|
while True:
|
|
valid, value, msg = get_yes_or_no()
|
|
|
|
if valid:
|
|
if value:
|
|
print(f"I'M GLAD TO HEAR THAT, {user_name}.")
|
|
print()
|
|
else:
|
|
print(f"OH, I'M SORRY TO HEAR THAT, {user_name}. MAYBE WE CAN")
|
|
print("BRIGHTEN UP YOUR VISIT A BIT.")
|
|
break
|
|
else:
|
|
print(f"{user_name}, I DON'T UNDERSTAND YOUR ANSWER OF '{msg}'.")
|
|
print("PLEASE ANSWER 'YES' OR 'NO'. DO YOU LIKE IT HERE?")
|
|
|
|
|
|
def prompt_for_problems(user_name):
|
|
print()
|
|
print(f"SAY, {user_name}, I CAN SOLVE ALL KINDS OF PROBLEMS EXCEPT")
|
|
print("THOSE DEALING WITH GREECE. WHAT KIND OF PROBLEMS DO")
|
|
print("YOU HAVE? (ANSWER SEX, HEALTH, MONEY, OR JOB)")
|
|
|
|
problem_type = input().upper()
|
|
return problem_type
|
|
|
|
|
|
def prompt_too_much_or_too_little() -> Tuple[bool, Optional[bool]]:
|
|
answer = input().upper()
|
|
if answer == "TOO MUCH":
|
|
return True, True
|
|
elif answer == "TOO LITTLE":
|
|
return True, False
|
|
return False, None
|
|
|
|
|
|
def solve_sex_problem(user_name: str) -> None:
|
|
print("IS YOUR PROBLEM TOO MUCH OR TOO LITTLE?")
|
|
while True:
|
|
valid, too_much = prompt_too_much_or_too_little()
|
|
if valid:
|
|
if too_much:
|
|
print("YOU CALL THAT A PROBLEM?!! I SHOULD HAVE SUCH PROBLEMS!")
|
|
print(f"IF IT BOTHERS YOU, {user_name}, TAKE A COLD SHOWER.")
|
|
else:
|
|
print(f"WHY ARE YOU HERE IN SUFFERN, {user_name}? YOU SHOULD BE")
|
|
print("IN TOKYO OR NEW YORK OR AMSTERDAM OR SOMEPLACE WITH SOME")
|
|
print("REAL ACTION.")
|
|
return
|
|
else:
|
|
print(f"DON'T GET ALL SHOOK, {user_name}, JUST ANSWER THE QUESTION")
|
|
print("WITH 'TOO MUCH' OR 'TOO LITTLE'. WHICH IS IT?")
|
|
|
|
|
|
def solve_money_problem(user_name: str) -> None:
|
|
print(f"SORRY, {user_name}, I'M BROKE TOO. WHY DON'T YOU SELL")
|
|
print("ENCYCLOPEADIAS OR MARRY SOMEONE RICH OR STOP EATING")
|
|
print("SO YOU WON'T NEED SO MUCH MONEY?")
|
|
|
|
|
|
def solve_health_problem(user_name: str) -> None:
|
|
print(f"MY ADVICE TO YOU {user_name} IS:")
|
|
print(" 1. TAKE TWO ASPRIN")
|
|
print(" 2. DRINK PLENTY OF FLUIDS (ORANGE JUICE, NOT BEER!)")
|
|
print(" 3. GO TO BED (ALONE)")
|
|
|
|
|
|
def solve_job_problem(user_name: str) -> None:
|
|
print(f"I CAN SYMPATHIZE WITH YOU {user_name}. I HAVE TO WORK")
|
|
print("VERY LONG HOURS FOR NO PAY -- AND SOME OF MY BOSSES")
|
|
print(f"REALLY BEAT ON MY KEYBOARD. MY ADVICE TO YOU, {user_name},")
|
|
print("IS TO OPEN A RETAIL COMPUTER STORE. IT'S GREAT FUN.")
|
|
|
|
|
|
def alert_unknown_problem_type(user_name: str, problem_type: str) -> None:
|
|
print(f"OH, {user_name}, YOUR ANSWER OF {problem_type} IS GREEK TO ME.")
|
|
|
|
|
|
def ask_question_loop(user_name: str) -> None:
|
|
while True:
|
|
problem_type = prompt_for_problems(user_name)
|
|
if problem_type == "SEX":
|
|
solve_sex_problem(user_name)
|
|
elif problem_type == "HEALTH":
|
|
solve_health_problem(user_name)
|
|
elif problem_type == "MONEY":
|
|
solve_money_problem(user_name)
|
|
elif problem_type == "JOB":
|
|
solve_job_problem(user_name)
|
|
else:
|
|
alert_unknown_problem_type(user_name, problem_type)
|
|
|
|
while True:
|
|
print()
|
|
print(f"ANY MORE PROBLEMS YOU WANT SOLVED, {user_name}?")
|
|
|
|
valid, value, msg = get_yes_or_no()
|
|
if valid:
|
|
if value:
|
|
print("WHAT KIND (SEX, MONEY, HEALTH, JOB)")
|
|
break
|
|
else:
|
|
return
|
|
print(f"JUST A SIMPLE 'YES' OR 'NO' PLEASE, {user_name}.")
|
|
|
|
|
|
def ask_for_fee(user_name: str) -> None:
|
|
print()
|
|
print(f"THAT WILL BE $5.00 FOR THE ADVICE, {user_name}.")
|
|
print("PLEASE LEAVE THE MONEY ON THE TERMINAL.")
|
|
time.sleep(4)
|
|
print()
|
|
print()
|
|
print()
|
|
print("DID YOU LEAVE THE MONEY?")
|
|
|
|
while True:
|
|
valid, value, msg = get_yes_or_no()
|
|
if valid:
|
|
if value:
|
|
print(f"HEY, {user_name}, YOU LEFT NO MONEY AT ALL!")
|
|
print("YOU ARE CHEATING ME OUT OF MY HARD-EARNED LIVING.")
|
|
print()
|
|
print(f"WHAT A RIP OFF, {user_name}!!!")
|
|
print()
|
|
else:
|
|
print(f"THAT'S HONEST, {user_name}, BUT HOW DO YOU EXPECT")
|
|
print("ME TO GO ON WITH MY PSYCHOLOGY STUDIES IF MY PATIENTS")
|
|
print("DON'T PAY THEIR BILLS?")
|
|
return
|
|
else:
|
|
print(f"YOUR ANSWER OF '{msg}' CONFUSES ME, {user_name}.")
|
|
print("PLEASE RESPOND WITH 'YES' or 'NO'.")
|
|
|
|
|
|
def unhappy_goodbye(user_name: str) -> None:
|
|
print()
|
|
print(f"TAKE A WALK, {user_name}.")
|
|
print()
|
|
print()
|
|
|
|
|
|
def happy_goodbye(user_name: str) -> None:
|
|
print(f"NICE MEETING YOU, {user_name}, HAVE A NICE DAY.")
|
|
|
|
|
|
def main() -> None:
|
|
print(" " * 33 + "HELLO")
|
|
print(" " * 15 + "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY\n\n\n")
|
|
print("HELLO. MY NAME IS CREATIVE COMPUTER.\n\n")
|
|
print("WHAT'S YOUR NAME?")
|
|
user_name = input()
|
|
print()
|
|
|
|
ask_enjoy_question(user_name)
|
|
|
|
ask_question_loop(user_name)
|
|
|
|
ask_for_fee(user_name)
|
|
|
|
if False:
|
|
happy_goodbye(user_name)
|
|
else:
|
|
unhappy_goodbye(user_name)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|