Napisałem prostą grę tekstowa w pythonoie 3.12, ale chciałbym wprowadzić do gry jakieś innowacyjne zmiany z wersji Python 3.15.
main.py
import sys
import random
from enum import Enum
def rps(name="PlayerOne"):
game_count = 0
player_wins = 0
python_wins = 0
def play_rps():
nonlocal name
nonlocal player_wins
nonlocal python_wins
class RPS(Enum):
ROCK = 1
PAPER = 2
SCISSORS = 3
playerchoice = input(
f"\n{name}, please enter...\n1 for Rock,\n2 for Paper, or \n3 for Scissors:\n\n"
)
if playerchoice not in ["1", "2", "3"]:
print(f"{name} please enter 1, 2, or 3.")
return play_rps()
player = int(playerchoice)
# if player < 1 | player > 3:
# sys.exit("You must enter 1, 2, or 3.")
computerchoice = random.choice("123")
computer = int(computerchoice)
print(f"\n{name}, you chose {str(RPS(player)).replace("RPS.", "").title()}.")
print(f"Python chose {str(RPS(computer)).replace("RPS.", "").title()}.\n")
def decide_winner(player, computer):
nonlocal name
nonlocal player_wins
nonlocal python_wins
if player == 1 and computer == 3:
player_wins += 1
return f"🥇 {name}, you win!"
elif player == 2 and computer == 1:
player_wins += 1
return f"🥇 {name}, you win!"
elif player == 3 and computer == 2:
player_wins += 1
return f"🥇 {name}, you win!"
elif player == computer:
return "⚖️ Tie game!"
else:
python_wins += 1
return f"🐍 Python wins!\nSorry, {name}..😥"
game_result = decide_winner(player, computer)
print(game_result)
nonlocal game_count
game_count += 1
print(f"\nGame count: {str(game_count)}")
print(f"\n{name}'s wins: {str(player_wins)}")
print(f"Python wins: { str(python_wins)}")
print("\nPlay again, {name}?")
while True:
playagain = input("\nY for Yes or \nQ to Quit \n")
if playagain.lower() not in ["y", "q"]:
continue
else:
break
if playagain.lower() == "y":
return play_rps()
else:
print("\n🏅🏅🏅🏅")
print("Thank you for playing!\n")
playagain = False
sys.exit(f"Bye {name}! 👋")
# break
return play_rps
rock_paper_scissors = rps()
if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser(
description="Provides a personalized game experience."
)
parser.add_argument(
"-n",
"--name",
metavar="name",
required=True,
help="The name of the person playing the game.",
)
args = parser.parse_args()
rock_paper_scissors = rps(args.name)
rock_paper_scissors()
# ctrl + i - emoji
# alt + j - zmiana nazwy wielu plików
# py main.py -n "John"
# "python": "clear && python3 -u $fileName -n James",
arcade.py
import sys
from main import main
from guess_number import guess_number
def play_game(name='PlayerOne'):
welcome_back = False
while True:
if welcome_back == True:
print(f"\n{name}, welcome back to the Arcade menu.")
playerchoice = input(
"\nPlease choose a game:\n1 = Rock Paper Scissors\n2 = Guess My Number\n\nOr press \"x\" to exit the Arcade\n\n"
)
if playerchoice not in ["1", "2", "x"]:
print(f"\n{name}, please enter 1, 2, or x.")
return play_game(name)
welcome_back = True
if playerchoice == "1":
rock_paper_scissors = rps(name)
rock_paper_scissors()
elif playerchoice == "2":
guess_my_number = guess_number(name)
guess_my_number()
else:
print("\nSee you next time!\n")
sys.exit(f"Bye {name}! 👋")
if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser(
description="Provides a personalized game experience."
)
parser.add_argument(
'-n', '--name', metavar='name',
required=True, help='The name of the person playing the game.'
)
args = parser.parse_args()
print(f"\n{args.name}, welcome to the Arcade! 🤖")
play_game(args.name)
guest_number.py
import sys
import random
def guess_number(name='PlayerOne'):
game_count = 0
player_wins = 0
def play_guess_number():
nonlocal name
nonlocal player_wins
playerchoice = input(
f"\n{name}, guess which number I'm thinking of... 1, 2, or 3.\n\n")
if playerchoice not in ["1", "2", "3"]:
print(f"{name}, please enter 1, 2, or 3.")
return play_guess_number()
computerchoice = random.choice("123")
print(f"\n{name}, you chose {playerchoice}.")
print(
f"I was thinking about the number {computerchoice}.\n"
)
player = int(playerchoice)
computer = int(computerchoice)
def decide_winner(player, computer):
nonlocal name
nonlocal player_wins
if player == computer:
player_wins += 1
return f"🎉 {name}, you win!"
else:
return f"Sorry, {name}. Better luck next time. 😢"
game_result = decide_winner(player, computer)
print(game_result)
nonlocal game_count
game_count += 1
print(f"\nGame count: {game_count}")
print(f"\n{name}'s wins: {player_wins}")
print(f"\nYour winning percentage: {player_wins/game_count:.2%}")
print(f"\nPlay again, {name}?")
while True:
playagain = input("\nY for Yes or \nQ to Quit\n")
if playagain.lower() not in ["y", "q"]:
continue
else:
break
if playagain.lower() == "y":
return play_guess_number()
else:
print("\n🎉🎉🎉🎉")
print("Thank you for playing!\n")
if __name__ == "__main__":
sys.exit(f"Bye {name}! 👋")
else:
return
return play_guess_number
if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser(
description="Provides a personalized game experience."
)
parser.add_argument(
'-n', '--name', metavar='name',
required=True, help='The name of the person playing the game.'
)
args = parser.parse_args()
guess_my_number = guess_number(args.name)
guess_my_number()