心理學實驗程序編程(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()函數只是為了檢驗出錯點,因為出的錯太多了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM