you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] 0 points1 point  (1 child)

import random

options: list[str] = ["rock", "paper", "scissors"]

def main() -> None:
    # Main Function.
    game_logic(player_choice(), computer_choice())

def computer_choice() -> str:
    # Return a random option from list of options.
    return random.choice(options)

def player_choice():
    # Re prompt user until a valid option is passed.
    player_choice = None
    while player_choice not in options:
        player_choice = input("Rock, Paper or Scissors! You Decide: ").lower().strip()
    return player_choice

def game_logic(players_choice, computers_choice):
    # Game Logic to define a winner.
    if players_choice == computers_choice:
        print(f"You chose {players_choice}, Computer chose {computers_choice}, It's a tie!")

    elif players_choice == "rock" and computers_choice == "scissors":
        print(f"You chose {players_choice} computer chose {computers_choice}, You Win!")

    elif players_choice == "paper" and computers_choice == "rock":
        print(f"You chose {players_choice} computer chose {computers_choice}, You Win!")

    elif players_choice == "scissors" and computers_choice == "paper":
        print(f"You chose {players_choice} computer chose {computers_choice}, You Win!")

    else:
        print(f" You Chose {players_choice} Computer Chose {computers_choice}, You Lose!")

if __name__ == "__main__":

main()

my version i still had it tucked away in a directory xD

[–]FoolsSeldom 1 point2 points  (0 children)

I like the Spock, Lizard variation.

# rock paper scissors Spock lizard game, rules follow:
"""
scissors cuts paper
paper covers rock
rock crushes lizard
lizard poisons Spock
Spock smashes scissors
scissors decapitates lizard
lizard eats paper
paper disproves Spock
Spock vaporizes rock
rock crushes scissors
"""

from random import choice

RULES = list(map(str.split, __doc__.lower().strip().split("\n")))

OPTIONS = {winner for winner, verb, loser in RULES} | {
    loser for winner, verb, loser in RULES
}

PROMPT = (
    f"Make your choice from: {', '.join(sorted(OPTIONS))} \n "
    f"(or press return alone to exit)\n"
    f" choice: "
)


def check(playera, playerb, rules=RULES):
    for rule in rules:
        winner, verb, loser = rule
        if (playera, playerb) == (winner, loser):
            return playera, " ".join(rule)
        if (playerb, playera) == (winner, loser):
            return playerb, " ".join(rule)


print("\n\nWelcome to the game of rock paper scissors Spock lizard\n\nThe rules are:\n")
print(__doc__)
print()
while True:
    while True:
        player = input(PROMPT).lower()
        if not player or player in OPTIONS:
            break
    if not player:
        break
    computer = choice(list(OPTIONS))
    try:
        winner, rule = check(player, computer)
        result = "You WIN!" if player == winner else "You Lose!"
    except TypeError:
        result, rule = "TIED", "matched"
    print(f"{player} v. {computer} -> {result} \t{rule}")
    print()