Ich arbeite gerade an der Corsi Block Tapping Task und hänge etwas fest. Ich bin python Anfänger und mein code ist mit Sicherheit nicht perfekt sauber, bitte entschuldigt das. Ich poste den ganzen Code in pastebin, die relevanten Teile aber hier rein.
Ich habe prinzipiell 2 Listen:
1. clicks: Das sind die Klicks des Users in Rechtecken in dieser Form: [(443, 479), (172, 285)]
2. gametime_squares: Das ist die Liste mit den Koordinaten der Sequenz, in der x von 9 Rechtecken aufleuchten, in dieser Form: [[437, 457], [82, 241]]
Ich möchte nun den User Input checken und gucken, ob die Klicks auch innerhalb der richtigen Rechtecke liegen, und auch ob die Reihenfolge stimmt. Sprich, liegt Klick 1 in Rechteck 1 der Sequenz, Klick 2 in Rechteck 2 der Sequenz, etc. (Z.z. ist die Sequenzlänge 2, aber die nimmt mit der Zeit zu). Dafür hab ich folgenden Code:
Code: Alles auswählen
def check_input(): #The coordinates of the list "clicks" must be within (collide) the rectangles of the list "gametime_squares"
#pprint.pprint((clicks, gametime_squares))
for cl, sq in zip(clicks, gametime_squares):
rects = pygame.Rect(sq[0], sq[1], rectSize, rectSize)
if rects.collidepoint( (cl[0], cl[1]) ):
print("Correct")
return True
else:
print("Incorrect")
return False
1. Wenn einige Klicks richtig, und andere falsch sind, wird hintereinander "correct" und "incorrect" geprintet, je nach Reihenfolge der richtigen und falschen Klicks.
2. Wenn ich zu viele Klicks mache (z.B. 3 Klicks, obwohl nur 2 Rechtecke aufgeleuchtet haben), und richtig anfange (z.B. die ersten 2 sind zwar korret, aber ich hänge noch einen Klick dran), wird trotzdem "correct" geprintet.
Ich möchte, dass nur wenn genau die richtigen Rechtecke in der richtigen Reihenfolge geklickt werden, correct ausgegeben wird. Alles andere ist falsch.
Danach möchte ich das ganze noch dem User anzeigen, sprich aufzeichnen. Wenn der Input korrekt ist, soll "correct" angezeigt werden, wenn nicht, incorrect. Das Drawn an sich kann ich, aber wie kann ich das Ergebnis von der Funktion oben nutzen, um davon abhängig das richtige zu drawen?
Danke im Voraus!
Hier der ganze Code: http://pastebin.com/UmvsdRKF