Ich erstelle ein kleines Spiel in Python. Ziel des Spiels ist es, alle Karten zu vergleichen. Mein ursprünglicher Code hat 2 Subroutinen, die viel doppelten Code haben (gefunden here). Ich habe versucht, sie zu verdichten, aber es hat nicht funktioniert.Erstellen eines kleinen Spiels. Warum funktioniert die Player-Variable nicht?
Hier ist der aktuelle Code:
def pick(Player):
P1score = 0
P2score = 0
Player = 0
if Player == 0:
Player = Player+1
elif Player == 1:
Player = 2
elif Player == 2:
Player = 1
if len(set1) == 0:
won(P1score,P2score)
else:
print("It's Player" +str(Player) + "'s turn and there are still "+ str(len(set1)) + " pairs left to find!")
side1 =int(input("What number would you like to pick from side one?"))
side2 =int(input("What number would you like to pick from side two?"))
#This function makes the player input 2 valid card numbers
while side1 not in range(len(set1)) or side2 not in range(len(set2)):
side1 =int(input("What number would you like to pick from side one?"))
side2 =int(input("What number would you like to pick from side two?"))
s1pick = set1[side1]
s2pick = set2[side2]
matching(s1pick, s2pick, set1, set2,P1score, P2score)
def matching(s1pick,s2pick,set1,set2,P1score,P2score,Player):
picks = []
picks.append(s1pick)
picks.append(s2pick)
if picks[0] == picks[1]:
if Player == 1:
P1score = P1score+1
elif Player == 2:
P2score = P2score + 1
for i in range (10):
print("Correct")
time.sleep(0.2)
print("Good Job, you successfully picked " + picks[0] + " and "+ picks[0])
set1.remove(s1pick)
set2.remove(s2pick)
pick(Player)
else:
print("Sorry, not a match! From side one you picked "+ picks[0] + " and from side 2 you picked " + picks[1])
pick(Player)
Player = 0
pick(Player)
Es gibt mehr Code darüber aber nicht, diesen Teil beeinflussen.
Grundsätzlich möchte ich die Variable Spieler von 1 zu 2, dann zurück zu 1, und so weiter, so dass der Rest des Programms weiß, wer den Punkt zu vergeben.
Warum funktioniert das nicht?
Ich habe nicht Ihren ganzen Code gelesen, aber 'Player = 0' ist wahrscheinlich nicht das, was Sie tun möchten. Das heißt, egal welchen Wert Sie "picken" nennen, es wird sofort verworfen und stattdessen wird Null verwendet. Im Allgemeinen ist es eine schlechte Idee, das Argument einer Funktion unbedingt zu überschreiben, ohne es vorher zu betrachten. – Kevin
Ich glaube, dass Ihr Abstand falsch ist. – ryekayo
Es sieht so aus, als ob Ihr Eindruck verstümmelt wurde. Ich habe versucht, es zu beheben, aber überprüfe es, falls ich es vermasselt habe. Die letzten zwei Zeilen, insbesondere: Ich nehme an, dass diese nicht eingerückt werden sollten. –