Unter der Annahme von zwei Spielern gibt es drei mögliche Endspielzustände (gewinnen, verlieren, binden) und neun verschiedene Ergebnisse (Rock-Rock, Papier-Schere, etc.). Wenn Sie dies als ein Wörterbuch tun möchten, könnten Sie drei Schlüssel erstellen - einen für jeden Endspielzustand - wobei jeder Wert eine Liste ist, die die möglichen Spiele enthält, die zu diesem Ergebnis führen. Diese Spiele können als geordnete Paare gespeichert werden, wobei der erste Wert des Tupels die Wahl des Spielers und der zweite Wert das des Gegners ist. zB der Schlüssel-Wert-Paar für alle möglichen Win-Staaten wäre die folgende:
"win" : [("rock", "scissors"), ("paper", "rock"), ("scissors", "paper")]
Sobald Sie Ihre dict
aller möglichen Spiele haben, es ist nur eine Frage durch jeden Endzustand Schlüssel iterieren und zu prüfen, ob oder nicht die tuple
der Entscheidungen, die vom Spieler und dem Gegner getroffen werden, ist innerhalb des list
Wertes enthalten, der mit diesem Schlüssel verbunden ist. Wenn ja, dann hast du das Ergebnis des Spiels gefunden.
from random import choice
answers = {"yes" : ["yes", "y"],
"no" : ["no", "n"]}
choices = ["rock", "paper", "scissors"]
games = {"win" : [(choices[0], choices[2]),
(choices[1], choices[0]),
(choices[2], choices[1])],
"lose" : [(choices[0], choices[1]),
(choices[1], choices[2]),
(choices[2], choices[0])],
"tie" : [(choices[0], choices[0]),
(choices[1], choices[1]),
(choices[2], choices[2])]}
print("Let's play \"Rock, paper, scissors\"!\n")
replay = True
while replay:
player = ""
while player.lower() not in choices:
player = input("Rock, paper, or scissors?: ")
opponent = choice(choices)
print("You chose {}.".format(player.lower()))
print("Your opponent chose {}.".format(opponent))
for outcome in games:
if (player.lower(), opponent) in games[outcome]:
print("You {} against your opponent!\n".format(outcome))
replay_decision = ""
while replay_decision.lower() not in (answers["yes"] + answers["no"]):
replay_decision = input("Would you like to play again? [y/n]: ")
if replay_decision.lower() in answers["no"]:
replay = False
print("\nThanks for playing!")
, die die folgende Beispielausgabe erzeugt:
In diesem Sinne könnte man so etwas wie das folgende tun
Let's play "Rock, paper, scissors"!
Rock, paper, or scissors?: rock
You chose rock.
Your opponent chose rock.
You tie against your opponent!
Would you like to play again? [y/n]: y
Rock, paper, or scissors?: paper
You chose paper.
Your opponent chose rock.
You win against your opponent!
Would you like to play again? [y/n]: y
Rock, paper, or scissors?: scissors
You chose scissors.
Your opponent chose paper.
You win against your opponent!
Would you like to play again? [y/n]: n
Thanks for playing!
können Sie auch früher Code einfügen und zeigen, was Sie versucht haben, und Was wird erwartet und funktioniert nicht für Sie? –
Sie können ein Diktat wie '{'rs': 'win', 'rr': 'tie',}' usw. machen. –
Dies könnte für Sie nützlich sein: https://codereview.stackexchange.com/questions/80067/Simple-Rock-Papier-Schere-in-Python – smundlay