Okay, thank you, here it is !
My first code is in “Info_Imc” routine :
→ Begin Experiment : from psychopy import visual win.mouseVisible = True IMCpercu = None # Initialisé à None delta = 5
→ End Routine : thisExp.addData('textbox_IMC', textbox_IMC.text)
try: IMCpercu_text = textbox_IMC.text # Récupère le texte de la textbox IMCpercu = float(IMCpercu_text) # Convertit en float
# Vérifie que l'IMC perçu est positif
if IMCpercu <= 0:
raise ValueError("Les valeurs doivent être positives.")
# Sauvegarde l'IMC perçu dans les données
thisExp.addData('IMCpercu', IMCpercu)
except ValueError as e: print(f"Erreur de conversion : {e}") # Affiche un message d'erreur dans la console IMCpercu = None # Optionnel : gérer une valeur par défaut en cas d'erreur
In “essai” routine :
→ Begin routine :
# Calculer le seuil de l'IMC cible basé sur l'IMC perçu imc_target = IMCpercu + delta
# Déterminer la réponse correcte en fonction de la condition if condition == "plus_élevée": correct_response = 'v' if stim_imc > imc_target else 'f' # Comparaison avec l'IMC cible (IMC perçu +5) elif condition == "plus_faible": correct_response = 'v' if stim_imc < imc_target else 'f' # Comparaison avec l'IMC cible (IMC perçu +5)
# Enregistrer la réponse correcte attendue thisExp.addData('CorrectResponse', correct_response)
# Afficher les valeurs pour vérification print(f"IMC perçu: {IMCpercu}, IMC cible: {imc_target}, IMC silhouette: {stim_imc}, Condition: {condition}") print(f"Réponse correcte: {correct_response}")
→ Each Frame :
# Récupère les touches appuyées keys = event.getKeys(keyList=['v', 'f']) # 'v' pour vrai, 'f' pour faux
if keys: participant_response = keys[0] # Première touche pressée # Vérifie si la réponse est correcte print(f"Réponse du participant: {participant_response}, Réponse correcte attendue: {correct_response}") if participant_response == correct_response: print("Bonne réponse !") feedback_message = 'Correct' reinforcement = "positif" else: print("Mauvaise réponse.") feedback_message = 'Incorrect' reinforcement = "négatif"
# Enregistre la réponse dans les données thisExp.addData('ParticipantResponse', participant_response) thisExp.addData('Reinforcement', reinforcement)
continueRoutine = False # Passe à l'essai suivant
In “feedback” routine :
→ Begin experiment : from psychopy import visual, event import psychopy.core core = psychopy.core progress = 0.5
→ Begin routine :
step = 0.05
# Déterminer le feedback à afficher if reinforcement == "positif": feedback_text.setText("Correct !") feedback_text.setColor('green') progress = min(progress + step, 3.0) # Limite à 100% barColor = "green" elif reinforcement == "négatif": feedback_text.setText("Incorrect !") feedback_text.setColor('red') progress = max(progress - step, -3.0) # Limite à 0% barColor = "red"
# Afficher les éléments (affichage automatique activé) feedback_text.setAutoDraw(True)
# Durée du feedback feedback_duration = 2.0 feedback_clock = core.Clock() feedback_clock.reset()
→ Each Frame :
# Fin du feedback après le délai spécifié if feedback_clock.getTime() >= feedback_duration: feedback_text.setAutoDraw(False) continueRoutine = False # Arrêter la routine après 2 secondes