2017-01-04 7 views
1

Ich habe gerade mein Paper Scissors Spiel in Python beendet. Im Moment muss der Benutzer zwischen drei Schaltflächen wählen, und eine Zeichenfolge user1 wird entweder auf "Rock", "Paper" oder "Scissors" gesetzt. Und , wenn ich das Spiel zu bewerten, wird der Code einfach ein paar if-Anweisungen und beispielsweise überprüft,Rock Paper Scissors - Gewinner mathematisch erhalten

if computer == "Paper" 

Aber wenn ich das Spiel ein wenig mit meinen eigenen Produkten erweitern will, das wäre viel "ansonsten". Sow ich dachte, ich würde jedem Gegenstand eine eindeutige Nummer geben, damit ich einfach diese Nummer benutzen kann und nicht mit den Saiten herumspielen muss.

Mein Lehrer gab mir den Hinweis, die zwei Eingänge zu teilen, um zu bekommen, wer gewinnt.

Aber nachdem ich eine Weile darüber nachgedacht habe, habe ich keine Lösung gefunden, wie ich das machen könnte. Es geht nur um die Logik dahinter, ich will keinen Code.

Wie kann ich den Gewinner nur mit ein wenig Mathe finden, mit den beiden Ints als die Elemente?

Schönen Tag noch DirtyDev!

+1

Was genau ist Ihre Frage? –

+0

Frage bearbeitet @Rob. Ich möchte den Gewinner abhängig von den zwei Int nur mit ein wenig Mathe bekommen – dv02

+1

@DirtyDev Sie haben nicht erklärt, wie der Gewinner gewählt wird. Du hast gesagt, dass du deine eigenen Gegenstände hinzufügen willst, die Zahlen haben werden, aber wir wissen nicht, welche Zahlen welche Zahlen schlagen, und ohne diese Informationen ist es unmöglich, dir beim Schreiben deines Algorithmus zu helfen, da wir es nicht einmal wissen was der Algorithmus tun soll. –

Antwort

5

Nehmen wir an, wir implementieren normale Rock Paper Scissors, wie Sie in Ihrem Kommentar zu Ihrer Frage sagen. Lassen Sie uns zu:

Rock:  0 
Paper: 1 
Scissors: 2 

Diese Antwort vorausgesetzt, dass Sie über den Modulo-Operator wissen (%), also, wenn nicht, schauen Sie sich bitte zuerst, dass bis zu verstehen, was es bedeutet. Ich benutze es in dieser Antwort, so dass, wenn wir 1 zu Scheren hinzufügen (das ist 2), erhalten Sie 0 statt 3, da Rock ist 0 und es gibt keine Elemente für die Nummer 3.

Mit dieser Zuordnung von Zahlen zu Entscheidungen, wir wollen eine Wahl zu gewinnen, wenn es direkt nach der Wahl der anderen Person kommt, verlieren, wenn es direkt davor kommt, und binden, wenn sie gleich sind. Zum Beispiel kommt 2 direkt nach 1, also Schere schlägt Papier. Wir werden den Modulo-Operator verwenden, um sicherzustellen, dass unsere Zahlen zwischen 1 und 3 bleiben (einschließlich 1 und 3).

Wenn Sie also bestimmen wollen, ob Spieler 1 gewinnt, würden Sie prüfen, ob ihr Zug 1 größer als der Zug von Spieler 2 ist. Um festzustellen, ob sie einen Gleichstand haben, sehen Sie, ob sie den gleichen Zug haben. Und wenn keiner von beiden wahr ist, muss Spieler 2 gewonnen haben. Hier ist eine Beispiel-Implementierung mit einigen Tests:

>>> def winner(p1, p2): 
... if (p1+1) % 3 == p2: 
...  return "Player 2 won because their move is one greater than player 1" 
... elif p1 == p2: 
...  return "It's a draw because both players played the same move" 
... else: 
...  return "Player 1 wins because we know that it's not a draw and that player 2 didn't win" 
... 
>>> 
>>> 
>>> rock = 0 
>>> paper = 1 
>>> scissors = 2 
>>> winner(rock, paper) 
'Player 2 won because their move is one greater than player 1' 
>>> winner(paper, scissors) 
'Player 2 won because their move is one greater than player 1' 
>>> winner(scissors, rock) 
'Player 2 won because their move is one greater than player 1' 
>>> winner(rock, scissors) 
"Player 1 wins because we know that it's not a draw and that player 2 didn't win" 
>>> winner(paper, paper) 
"It's a draw because both players played the same move" 

Jetzt in diesem Spiel war die mathematische Regel, dass ein Element schlägt das Element mit der Nummer 1 kleiner als es (Modulo 3). Wenn Sie weitere Elemente hinzufügen, müssen Sie eine mathematische Regel erstellen, um zu bestimmen, wie das Spiel funktioniert. Ein Beispiel (das würde nicht sehr viel Spaß machen) wäre, die Regel zu behalten, dass ein Gegenstand den Gegenstand 1 weniger schlägt als der Gegenstand (und deshalb den Gegenstand 1 mehr verliert als dieser), und hat eine Verbindung mit irgendeinem anderen Gegenstand Das wäre ein ziemlich langweiliges Spiel.

Hoffe, dass die Antwort hilft !! Viel Glück!

Verwandte Themen