For a better exposition of my issue, you could see the full code below
from psychopy import visual, event, core, monitors
import random
from numpy import linspace
win = visual.Window(size=(800, 600), color=‘black’, units=‘pix’)
ball = visual.Circle(win, radius=56.69, pos=(0, 0), fillColor=‘gray’, lineColor=None)
opening = visual.Circle(win, radius=30, pos=(0, 175), fillColor=‘white’, lineColor=None)
chemin_image = “cross.jpg”
cross = visual.ImageStim(win, image=chemin_image, pos=(0,-175))
chemin_image = “fixationcross.png”
false_circle = visual.Circle(win, radius=10, pos=(0, 0), fillColor=‘blue’, lineColor=None)
fixation_cross = visual.ImageStim(win, image=chemin_image, pos=(0,0))
fixation_ball = visual.Circle(win, radius=8, pos=(0, 0), fillColor=‘gray’, lineColor=None)
opening_sizes = linspace(5.67, 113.4, num=20)
random.shuffle(opening_sizes)
for block in range(5): # 5 blocs
for opening_size in opening_sizes:
fixation_cross.draw()
fixation_ball.draw()
win.flip()
mouse = event.Mouse()
response_clock = core.Clock()
response_clock.reset()
click_detected = False
while not click_detected and response_clock.getTime() < 10:
if mouse.getPressed()[0]:
if fixation_ball.contains(mouse):
click_detected = True
opening.setRadius(opening_size)
ball.draw()
opening.draw()
cross.draw()
win.flip()
participant_response = None
mouse = event.Mouse()
mouse.setVisible(True)
mouse.setPos((0, 0))
response_clock = core.Clock()
response_clock.reset()
click_detected = False
while not click_detected and response_clock.getTime() < 10:
mouse_pos = mouse.getPos()
if mouse.getPressed()[0]:
if opening.contains(mouse):
participant_response = 'opening'
click_detected = True
elif cross.contains(mouse):
participant_response = 'cross'
click_detected = True
# Restreindre le mouvement vertical
x, y = mouse.getPos()
if x > 0:
mouse.setPos((0, y))
elif x < 0:
mouse.setPos((0, y))
if participant_response is None:
participant_response = 'NR'
print(f"Block: {block + 1}, Opening Size: {opening_size}, Response: {participant_response}")
win.close()