simmon effect : build the funcion of trail list

复制代码
#the real experiment for simon effect
#load the library which is our need
import pygame
import sys
import random
from pygame.locals import *

pygame.init()
win = pygame.display.set_mode((800,600),DOUBLEBUF|HWSURFACE)
left = (200,300)
right = (600,300)
red  =(255,0,0)
blue = (0,0,255)
black = (0,0,0)

#wait for the pressed key

def wait4key(duration,key_list):
    """the function is to wait for subject to press the right key , and the experient will continue untill the\
subject press the key
duration : the time which is the subject wait to press the key ,if the time is too long ,the experiment will\
continue automaticly.
key_list: the key which the subject need to press to continue the experiment, and the key_list must \
be a list such as [K_A,K_/]"""
    
    fake_bool =False
    time_out = False

    #empty the event before 
    pygame.event.clear()
    
    #use for count the time
    start_time = pygame.time.get_ticks()
    
    #if the subject does not press the right key, he will in the while loop all the time untill the duration is exhausted
    while  not (fake_bool or time_out):
        end_time = pygame.time.get_ticks()
        #if the duration is too long , the experiment will continue
        if end_time - start_time > duration:
            time_out = True
        #if subject press the right key ,the experimet will continue
        for i in pygame.event.get():
            if i.type ==KEYDOWN:
                if i.key in key_list:
                    #prepare for the result of the function
                    response_time = pygame.time.get_ticks()
                    key_name = pygame.key.name(i.key)
                    #if has the right key ,the loop will quit
                    fake_bool = True
    #in the end, if subject press the key ,we will collect the time , and the name of the key
    if fake_bool:
        return start_time, response_time, key_name
    #the purpose of the next line is stay the same with the result
    else:
        return start_time, None, None
        
#experiment for 10 times

#creat the list
#L mean left ,R mean right , RE mean the color red, BL mean the color blue
lis = [ ["L","RE","Z"],
        ["L","BL","/"],
        ["R","RE","Z"],
        ["R","BL","/"]]

#creat a function to ran one trial
def one_trial_list(pars):
#the parameters must be a list which contains the location, color ,right response of the stimuli and the the sequence of the element of parameters should not change"""
    global left
    global right
    global red
    global blue
    global black
    loc,col,ress=pars
    if loc =="L":
        pos = left
    if loc =="R":
        pos = right
    if col =="BL":
        color = red
    if col == "RE":
        color = blue

    win.fill(black)
    pygame.draw.circle(win,color,pos,20,0)
    pygame.display.flip()
    result = wait4key(2000,[K_z,K_SLASH])
    print(result)


#random our lis which contains four trails
lis1 = lis*2
random.shuffle(lis1)

#run four trials
for i in lis1:
    one_trial_list(i)
    
    #when one trail end ,fill the window black again
    win.fill(black)
    pygame.display.flip()
    pygame.time.delay(500)
pygame.quit()
sys.exit()
    
 
复制代码

another function to improve our experiment

 

 the result

 

posted @   看星星的派大星  阅读(174)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示