import random # Check that users have entered a valid # option based on a list def string_checker(question, valid_ans): while True: error = f"Enter a valid option from {valid_ans}" user_response = input(question).lower() for item in valid_ans: # check if the user response is a valid answer if item == user_response: return item elif user_response == item[0]: return item print(error) print() def instructions(): print(''' **** Instructions **** To begin, choose the number of rounds you would like to play (note you can only choose between 5 to 15 rounds) The rules: you can only get correct or not correct answer in no or yes format this can make the game run more smoothly note: In this game, we will also show you what you got wrong and what you have gotten right ''' ) # compare the comp selection v the user input # result - win, lose or tie def rps_compare(user, comp): if user == comp: round_result = "tie" elif user == "paper" and comp == "rock": round_result = "win" elif user == "rock" and comp == "scissors": round_result = "win" elif user == "scissors" and comp == "paper": round_result = "win" else: round_result = "lose" return round_result # checks the input is an integer def int_check(question): while True: error = "Enter an integer more than 1" try: response = int(input(question)) # check the number is more than 1 if response >= 1: return response else: print(error) except ValueError: print(error) # Main routine # game variables mode = "regular" rounds_played = 0 rounds_lost = 0 rounds_won = 0 yes_no = ["yes", "no"] rps_list = ["rock", "paper", "scissors", "xxx"] game_history = [] print() print("** The multiplication Game **") print() print("** Welcome to the multiplication game **") print() # instructions want_instructions = string_checker("Do you want to see the instructions? ", yes_no) if want_instructions == "yes": instructions() num_rounds = int_check("Enter the number of rounds you would like ") # game loop starts here while rounds_played < num_rounds: rounds_heading = f"\n*** Round {rounds_played + 1} of {num_rounds} ***" print(rounds_heading) user_choice = string_checker("What do you choose: ", rps_list) # Random computer choice comp_choice = random.choice(rps_list[:-1]) result = rps_compare(user_choice, comp_choice) # Add counters for the result and the game history if result == "win": rounds_won += 1 feedback = "\U0001F607 \U0001F929 You are correct! \U0001F929 \U0001F607" else: rounds_lost += 1 feedback = "*** You lose! ***" round_feedback = f"{user_choice} vs {comp_choice}: {feedback}" history_item = f"Round: {rounds_played + 1} - {round_feedback}" print(round_feedback) game_history.append(history_item) rounds_played += 1 if rounds_played > 0: # Calculate stats rounds_won = rounds_played - rounds_lost percentage_won = rounds_won / rounds_played * 100 percentage_lost = rounds_lost / rounds_played * 100 # Display Game Stats print() print("**** GAME STATS ****") print(f"You won {rounds_won} out of {rounds_played} rounds") print(f"Won: {percentage_won:.2f} % \t" f"Lost: {percentage_lost:.2f} % \t") print() # Game history option see_history = string_checker("Do you want to see your game history? ", yes_no) if see_history == "yes": for item in game_history: print(item) else: print("😾😾😾 Scaredy Cat! 😾😾😾") # End of program message print() print("The program has ended")