es ist immer unangenehm mit einer Frage in einem neuen Forum aufzutauchen, jedoch ist dies ja auch meist der Grund weshalb man überhaupt ein Forum aufsucht..
Ich studiere Psychologie und im Rahmen das Studiums lernen wird Grundlegende Programmierkentnisse um gewisse Dinge selbst realisieren zu können. Ein Beispiel davon ist der Corsi Blocktapping Task, bei dem es darum geht sich eine Reihenfolge von Quadraten zu merken, die nach und nach aufleuchten und diese danach zu wiederholen. (YouTube - Corsi Block Tapping - Sind Videos zu finden, zum besseren Verständnis). Als Projekt gilt es nun, dieses "Spiel" selbst nachzuprogrammieren, was mich in gewissen Bereichen vor größere Heraussforderungen stellt, als ich erwartete.
Das Programm ist in soweit programmiert, dass er mir die Anordnung der quadrate auf dem Bildschirm anzeigt. Nun geht es zu der Aufgabe, dem Programm zu sagen, dass er eine zufällige Reihenfolge der Quadrate erstellen soll und diese Quadrate auch auf dem Bildschirm anzeigt. Dies natürlich aufsteigend mit jedem Trial, bis alle 9 Quadrate genutzt werden.
Hier mein Ansatz:
Ich habe ein Dictionary erstellt, indem von 0-8 die Koordinaten aller 9 Quadrate hinterlegt ist.
Code: Alles auswählen
# ...
button_dictionary = {0: ["", 70, 60, 60, 60],
1: ["", 100, 210, 60, 60],
2: ["", 100, 320, 60, 60],
3: ["", 200, 40, 60, 60],
4: ["", 320, 120, 60, 60],
5: ["", 420, 80, 60, 60],
6: ["", 380, 240, 60, 60],
7: ["", 300, 350, 60, 60],
8: ["", 400, 420, 60, 60]}
Code: Alles auswählen
# ...
stimuli_list = [0, 1, 2, 3, 4, 5, 6, 7, 8]
Code: Alles auswählen
def draw_button(button, black = col_black, red = col_red):
mouse = pygame.mouse.get_pos()
click = pygame.mouse.get_pressed()
if button[1] + button[3] > mouse[0] > button[1] and button[2] + button[4] > mouse[1] > button[2]:
pygame.draw.rect(screen, red, (button[1], button[2], button[3], button[4]))
else:
pygame.draw.rect(screen, black, (button[1], button[2], button[3], button[4]))
Dazu gibt es eine Variable die die Zahl der trials zählt.
Code: Alles auswählen
num_loopbutton = 0
Um nun die Quadrate auf den Screen zu zeichnen, habe ich in den Paramtern der Funktion angegeben, er soll anhand der Trialvariable den Wert aus der entsprechenden Postion der Liste nehmen und mit dem Wert der liste wiederrum die passenden Koordinaten aus dem Dictionary. -> Schwer zu erklären, ich hoffe einigermaßen verständlich.
Dies klappt scheinbar einigermaßen, jedoch nimmt er nur das erste Quadrat und wechselt die Farbe zu rot. (Normal soll er für 1 Sec rot anzeigen, dann wieder schwarz und dann das nächste Quadrat).
Code: Alles auswählen
# ...
if STATE == "PREPARE_STIMULUS":
random.shuffle(stimuli_list)
print (stimuli_list)
STATE = "PRESENT_STIMULUS"
elif STATE == "PRESENT_STIMULUS":
if startingtime == 0:
startingtime = time()
elif (time() - startingtime) > 1.0:
num_loopbutton + 1
if num_loopbutton == numBlocksToRemember:
startingtime = 0
num_loopbutton = 0
STATE = "WAIT_FOR_RESPONSE"
else:
startingtime = time()
Gibt es hier jemanden der mein Problem versteht und mir vielleicht auf die Sprünge helfen kann? Vielleicht ist auch mein kompletter Ansatz lächerlich, jedoch habe ich erst vor 6 Wochen mit dem programmieren begonnen und das auch nur "nebensächlich".
Viele Grüße und bereits sehr seeehr vielen Dank im Voraus,
Sven
Ich hoffe bisher war alles verständlich.