心理学实验程序编程(python)

任务一:实现简单的屏幕的颜色之间的切换

import pygame
from pygame.locals import *

pygame.init()
win = pygame.display.set_mode((800,600),DOUBLEBUF|HWSURFACE)
for i in range(10):
    win.fill((0,255,0))
    if i%2==0:
        win.fill((255,0,0))
    pygame.time.wait(500)
    pygame.display.flip()

注意的点:

需要先导入Pygame.locals才能用后来的doublebuf 以及hwsurface

但是怎么样定义屏幕的颜色即  depth   的设置还不是很懂。

 

 任务二:捕捉鼠标移动的事件,并在鼠标的位置画一个圆

import pygame
from pygame.locals import *
import sys

pygame.init()
win = pygame.display.set_mode((800,600),DOUBLEBUF|HWSURFACE)
while True:
    ev = pygame.event.get()
    for i in ev:
        if not i ==None:
            print(i)
        if i.type==QUIT:
            pygame.quit()
        elif i.type==MOUSEMOTION:
            pygame.draw.circle(win,(255,0,0),i.pos,3, 3)
        pygame.display.flip()

疑问:在pygame.draw.circle函数中不能加关键字如radius=,  或者width =,只能直接写值,不知道为什么。

还有在捕捉事件的过程中一定要加入死循环,不然事件会瞬间打印出来,再后来的事件发生之前,捕捉已经结束。

任务三:simon 效应的雏形,随机呈现小圆点

#random circle dot in the window
import pygame,sys,random
from pygame.locals import *


pygame.init()
win = pygame.display.set_mode((800,600),DOUBLEBUF|HWSURFACE)
cor = ()
position = ()
for i in range(30):
  
    num = random.choice([0,1])
    if num ==0:
        cor = (255,0,0)
        position = (200,300)
    else:
        cor=(0,255,0)
        position =(600,300)
    pygame.time.wait(500)

    pygame.draw.circle(win,cor,position,10)
##    win.fill((0,0,0))   the display covers?when the code is here,the reason is that the background dont cansal the circle 
    
    pygame.display.flip()
    pygame.time.delay(1000)
    win.fill((0,0,0))
    pygame.display.flip()#no no no ,because i dont have the flip(), not the background cannt cover the circle 
    pygame.time.delay(800)


pygame.quit()
sys.exit()

注意的点:

呈现圆点后的黑屏,要用filp()函数,而并不是背景色不能够覆盖圆点

 

 

任务四:如何添加声音

##add a sound to the window
import pygame
from pygame.locals import *

pygame.init()
win = pygame.display.set_mode((800,600),DOUBLEBUF|HWSURFACE)
sound = pygame.mixer.Sound("C:/Users/mike1/Desktop/1111111.wav")
sound.play()

 

需要注意的点:

1、其实不需要win这个屏幕依然可以运行声音文件

2、声音文件必须是wav格式,试了一下mp3格式,但是并不支持,可以在线将mp3格式转换成wav格式。(https://cloudconvert.com/mp3-to-wav,这是在线转换的网址)

 

任务五:在windows上添加图片

#add a picture to the screen
import pygame
from pygame.locals import *

pygame.init()
win = pygame.display.set_mode((800,600),DOUBLEBUF|HWSURFACE)
pict = pygame.image.load("C:/Users/mike1/Desktop/thJ0KCHYOU.jpg").convert()

win.blit(pict,(0,0))
pygame.display.flip()

运行结果:

 

 

 

需要注意的点

1、好像没有什么可以注意的点,convert()函数可用可不用

 

 

任务6:在windows上添加文字

#show text message to the screen
#-*- coding: utf-8 -*-  #thisline is nessisary

import pygame,sys
from pygame.locals import *

pygame.init()
win = pygame.display.set_mode((800,600),DOUBLEBUF|HWSURFACE)
print(1)
font_object = pygame.font.SysFont("华文宋体",15)
print(1)
font_imag = font_object.render(u"this is 我们message",True,(255,0,0))

win.blit(font_imag,(0,0))
pygame.display.flip()

结果:

 

 需要注意的点:

1、在第一行必须加入# -*- coding: utf-8 -*- 这句话,因为python默认的是unicode 编码,而汉子是utf-8编码,第一行就指定了code的编码格式。

2、pygame.font.SysFont()函数中,必须指定汉字的格式,比如arial就不行,华文宋体就可以,至于有哪些字体的格式,可以通过pygame.font.get_fonts()函数来获得。

3、在render()函数中,字符串可以用u"   ",开头,也可以用"    ",开头,直接省略u.

4、print()函数只是为了检验出错点,因为出的错太多了。

 

posted @ 2019-09-23 00:28  看星星的派大星  阅读(2494)  评论(0编辑  收藏  举报