|
|
|
import random
|
|
|
|
import os
|
|
|
|
|
|
|
|
def play_round():
|
|
|
|
choices = ["rock", "paper", "scissors"]
|
|
|
|
computer_choice = random.choice(choices)
|
|
|
|
|
|
|
|
while True:
|
|
|
|
user_choice = input("Enter rock, paper, or scissors: ").lower()
|
|
|
|
if user_choice in choices:
|
|
|
|
break
|
|
|
|
else:
|
|
|
|
print("Invalid choice. Please enter rock, paper, or scissors.")
|
|
|
|
|
|
|
|
print(f"You chose: {user_choice}")
|
|
|
|
print(f"Computer chose: {computer_choice}")
|
|
|
|
|
|
|
|
if user_choice == computer_choice:
|
|
|
|
print("It's a tie!")
|
|
|
|
return 0
|
|
|
|
elif (
|
|
|
|
(user_choice == "rock" and computer_choice == "scissors")
|
|
|
|
or (user_choice == "paper" and computer_choice == "rock")
|
|
|
|
or (user_choice == "scissors" and computer_choice == "paper")
|
|
|
|
):
|
|
|
|
print("You win!")
|
|
|
|
return 1
|
|
|
|
else:
|
|
|
|
print("You lose!")
|
|
|
|
return -1
|
|
|
|
|
|
|
|
def save_game_history(user_score, computer_score, result):
|
|
|
|
filename = "game_history.txt"
|
|
|
|
mode = "a" if os.path.exists(filename) else "w" # Append if file exists, create otherwise
|
|
|
|
|
|
|
|
with open(filename, mode) as f:
|
|
|
|
if mode == "w":
|
|
|
|
f.write("Round,User Choice,Computer Choice,Result,User Score,Computer Score,User Win Percentage,Computer Win Percentage\n")
|
|
|
|
|
|
|
|
user_choice_save = ""
|
|
|
|
computer_choice_save = ""
|
|
|
|
result_string = ""
|
|
|
|
|
|
|
|
if result == 1:
|
|
|
|
result_string = "Win"
|
|
|
|
elif result == -1:
|
|
|
|
result_string = "Lose"
|
|
|
|
else:
|
|
|
|
result_string = "Tie"
|
|
|
|
|
|
|
|
if mode == "a":
|
|
|
|
user_choice_save = input("Enter rock, paper, or scissors: ").lower()
|
|
|
|
computer_choice_save = random.choice(["rock", "paper", "scissors"])
|
|
|
|
|
|
|
|
total_rounds = user_score + computer_score
|
|
|
|
user_win_percentage = (user_score / total_rounds) * 100 if total_rounds > 0 else 0
|
|
|
|
computer_win_percentage = (computer_score / total_rounds) * 100 if total_rounds > 0 else 0
|
|
|
|
|
|
|
|
f.write(f"{total_rounds},{user_choice_save},{computer_choice_save},{result_string},{user_score},{computer_score},{user_win_percentage:.2f}%,{computer_win_percentage:.2f}%\n")
|
|
|
|
print(f"Game history saved to {filename}")
|
|
|
|
|
|
|
|
def main():
|
|
|
|
user_score = 0
|
|
|
|
computer_score = 0
|
|
|
|
|
|
|
|
print("Welcome to Rock, Paper, Scissors!")
|
|
|
|
|
|
|
|
while True:
|
|
|
|
result = play_round()
|
|
|
|
if result == 1:
|
|
|
|
user_score += 1
|
|
|
|
elif result == -1:
|
|
|
|
computer_score += 1
|
|
|
|
|
|
|
|
save_game_history(user_score, computer_score, result)
|
|
|
|
|
|
|
|
play_again = input("Play again? (yes/no): ").lower()
|
|
|
|
if play_again != "yes":
|
|
|
|
break
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
main()
|