zoukankan      html  css  js  c++  java
  • simmon effect(psychology experiment) : this time, we add file_function who can creat a file in the window which contains our result

    #the real experiment for simon effect
    #load the library which is our need
    import pygame
    import sys
    import random
    from pygame.locals import *
    
    
    #creat the subject information function
    def sub_info():
        sub_ID = input("please input your number: ")
        sub_name = input("please input your name: ")
        sub_male = input("please input your male: ")
        sub_age = input("please input your age: ")
        return sub_ID, sub_name,sub_male,sub_age
    #the variable result will be a tuple 
    result = sub_info()
    #turn the tuple to a list
    result = list(result)
    
    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
    #the list for store our result 
    lis2 = []
    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
        global result
        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()
        result1 = wait4key(2000,[K_z,K_SLASH])
        #turn the result1 which is the result of the wait4key function to a list 
        result1 = list(result1)
        #join two list and then give it to a new variable 
        result2 = result + result1
        #turn the list to a string and add a space to the end
        #we need to turn the element of result2 to string type, because some element are int
        resul_map = map(str,result2)
        result2 = ",".join(resul_map) + "
    "
        print(result2)2
        return result2
    
    #random our lis which contains four trails
    lis1 = lis*2
    random.shuffle(lis1)
    
    #run four trials and write our  result to a new file
    #open a file
    with open("C:/Users/mike1/Desktop/simmon_result.txt","w",encoding = "utf-8") as f1:
    
    
        for i in lis1:
            result4 = one_trial_list(i)
            #write every result to the file 
            f1.write(result4)
            
            #when one trail end ,fill the window black again
            win.fill(black)
            pygame.display.flip()
            pygame.time.delay(500)
        pygame.quit()
    sys.exit()
     

    the result

     we also creat a file in the window

  • 相关阅读:
    如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?
    如何评测软件工程知识技能水平
    深入理解TCP协议及其源代码
    Socket与系统调用深度分析
    创新产品的需求分析:未来的图书会是什么样子?
    构建调试Linux内核网络代码的环境MenuOS系统
    Java实现简单网络聊天程序
    适配器模式的探究
    Linux下ss命令的研究
    业务领域建模Domain Modeling
  • 原文地址:https://www.cnblogs.com/zijidefengge/p/11582478.html
Copyright © 2011-2022 走看看