任務一:實現簡單的屏幕的顏色之間的切換
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()函數只是為了檢驗出錯點,因為出的錯太多了。