資源簡(jiǎn)介 (共19張PPT)第15課 Pygame基礎(chǔ)什么是PygamePygame是Python的一個(gè)模塊,它提供了用圖形化用戶(hù)界面(Graphical User Interface,GUI)來(lái)創(chuàng)建游戲的功能。Pygame的安裝安裝Pygame 需要用到pip 工具。pip 是一個(gè)安裝和管理Python 包的工具。如果Python 安裝在了C:\Users\用戶(hù)名\AppData\Local\Programs\Python 目錄,那么pip 工具就安裝在了C:\Users\用戶(hù)\AppData\Local\Programs\Python\Python37-32\Scripts目錄下。在命令行輸入“python –m pip install –U pygame --user”,按下回車(chē)鍵后,就可以進(jìn)行安裝Pygame。要確保環(huán)境變量Path的之中,添加了“C:\Users\用戶(hù)名AppData\Local\Programs\Python\Python37-32\Scripts”,否則會(huì)找不到pip命令。Pygame 窗口使用Pygame繪圖,需要建立一個(gè)窗口。import pygamepygame.init()windowSurface=pygame.display.set_mode([500,400])Running=Truewhile Running:for event in pygame.event.get():if event.type == pygame.QUIT:Running =Falsepygame.quit()Surface對(duì)象是表示一個(gè)矩形2D圖像的對(duì)象。我們可以通過(guò)調(diào)用Pygame 繪制函數(shù),來(lái)改變Surface 對(duì)象的像素,然后再顯示到屏幕上。注意,pygame.display.set_mode()返回的Surface對(duì)象叫作顯示Surface(display Surface)。當(dāng)調(diào)用pygame.display.update()函數(shù)的時(shí)候,之前繪制到顯示Surface 對(duì)象上的任何內(nèi)容,都會(huì)顯示到窗口上。Pygame 的坐標(biāo)系和顏色在海龜繪圖中,原點(diǎn)位于屏幕的中心,越向屏幕右方,x坐標(biāo)越大,越向屏幕上方,y坐標(biāo)越大。Pygame則使用一種新的坐標(biāo)系。Pygame窗口的左上角是原點(diǎn)(0, 0)。隨著我們向右移動(dòng),x坐標(biāo)還是變得越來(lái)越大,但是,x坐標(biāo)沒(méi)有負(fù)值。隨著向下移動(dòng),y 坐標(biāo)的值逐漸增加,y 坐標(biāo)也沒(méi)有負(fù)值。顏色用元組表示,并且用常量保存。BLACK=(0,0,0)WHITE=(255,255,255)GREEN=(0,255,0)BLUE=(0,0,255)RED=(255,0,0)繪圖函數(shù)pygame.draw.line()函數(shù)該函數(shù)繪制線(xiàn)段,有5個(gè)參數(shù):待顯示的Surface 對(duì)象;畫(huà)筆的顏色起始位置坐標(biāo);結(jié)束位置坐標(biāo);線(xiàn)條粗細(xì)。可以用它繪制一個(gè)字母H。參見(jiàn)程序清單15.3.py。繪圖函數(shù)pygame.draw.rect()函數(shù)該函數(shù)繪制矩形,有4個(gè)參數(shù):待顯示的Surface 對(duì)象;畫(huà)筆的顏色;4 個(gè)整數(shù)的一個(gè)元組(分別表示左上角的X坐標(biāo)和Y坐標(biāo),以及寬度和高度);線(xiàn)條粗細(xì),如果是0,表示矩形是填充的。可以用它繪制一個(gè)紅色的矩形。參見(jiàn)程序清單15.4.py。繪圖函數(shù)pygame.draw.circle()函數(shù)該函數(shù)繪制圓形,有5個(gè)參數(shù):待顯示的Surface 對(duì)象;畫(huà)筆的顏色;要繪制的圓的圓心坐標(biāo);要繪制的圓的半徑;線(xiàn)條粗細(xì),如果是0,表示圓形是填充的。可以用它繪制一個(gè)紅色的矩形。參見(jiàn)程序清單15.5.py。繪圖函數(shù)pygame.draw.polygon()函數(shù)該函數(shù)繪制多邊形,有4個(gè)參數(shù):待顯示的Surface 對(duì)象;畫(huà)筆的顏色;坐標(biāo)列表。多邊形的多條邊是通過(guò)在每個(gè)坐標(biāo)點(diǎn)以及其后續(xù)的坐標(biāo)點(diǎn)之間依次繪制線(xiàn)條,然后,從最后的點(diǎn)到第一個(gè)點(diǎn)繪制線(xiàn)條而形成的。線(xiàn)條粗細(xì),如果是0 或者不填寫(xiě),表示多邊形是填充的。可以用它繪制一個(gè)紅色的矩形。參見(jiàn)程序清單15.6.py。繪圖函數(shù)pygame.draw.ellipse()函數(shù)該函數(shù)繪制橢圓形,有4個(gè)參數(shù):待顯示的Surface 對(duì)象;畫(huà)筆的顏色;邊界矩形(bounding rectangle),就是圍繞這一個(gè)形狀所能繪制的最小的矩形。參數(shù)可以是一個(gè)pygame.Rect 對(duì)象或者是4個(gè)整數(shù)的一個(gè)元組;線(xiàn)條粗細(xì)。可以用它繪制一個(gè)紅色的矩形。參見(jiàn)程序清單15.7.py。動(dòng)畫(huà)加載圖片在Pygame中,可以通過(guò)調(diào)用image()函數(shù)操作圖片。要把要加載的照片復(fù)制到和保存Python程序相同的位置。這樣,程序運(yùn)行時(shí)Python就能很方便地找到這個(gè)文件,而不需要指定圖片存儲(chǔ)的路徑。參見(jiàn)程序清單15.9.py。動(dòng)畫(huà)移動(dòng)起來(lái)在游戲循環(huán)中,更新圖片的坐標(biāo)位置,然后每次執(zhí)行循環(huán)的時(shí)候在新的位置繪制圖片,這樣一來(lái),看上去就好像小狗在移動(dòng)一樣。參見(jiàn)程序清單15.10.py。去掉軌跡在每次復(fù)制圖像之前,都調(diào)用一次screen.fi ll()函數(shù),來(lái)填充要繪制的屏幕。參見(jiàn)程序清單15.11.py。動(dòng)畫(huà)碰撞檢測(cè)碰撞檢測(cè)(collision detection)負(fù)責(zé)檢查并處理計(jì)算屏幕上的兩個(gè)物體發(fā)生彼此接觸(也就是發(fā)生碰撞)的情況。當(dāng)檢測(cè)到小狗碰到了這個(gè)邊界,就改變它的移動(dòng)方向,讓它掉頭往回跑。參見(jiàn)程序清單15.12.py。動(dòng)畫(huà)設(shè)置幀速率幀速率(frame rate)是指程序每秒鐘繪制的圖像的數(shù)目,用每秒多少幀(Frames Per Second,F(xiàn)PS)來(lái)度量。Pygame.time模塊中的Clock對(duì)象可以幫助避免程序運(yùn)行得過(guò)快。Clock對(duì)象有一個(gè)tick()方法,它接收的參數(shù)表示想要游戲運(yùn)行速度是多少FPS。參見(jiàn)程序清單15.13.py。字體字體(font)是字體類(lèi)型的一種描述,表示按照統(tǒng)一風(fēng)格繪制的一整套的字母、數(shù)字、符號(hào)和字符,例如SimHei和Times New Roman都是字體。調(diào)用pygame.font.SysFont函數(shù)來(lái)創(chuàng)建一個(gè)Font對(duì)象,這個(gè)函數(shù)有兩個(gè)參數(shù),第1個(gè)參數(shù)是字體名稱(chēng),第2個(gè)參數(shù)是字體大小(以點(diǎn)為單位)。參見(jiàn)程序清單15.14.py。事件當(dāng)用戶(hù)做了諸如按下一個(gè)按鍵或者移動(dòng)鼠標(biāo)等動(dòng)作,Pygame庫(kù)都會(huì)創(chuàng)建一個(gè)Pygame.event.Event 對(duì)象來(lái)記錄這個(gè)動(dòng)作,這就是“事件”鍵盤(pán)事件按下某個(gè)鍵盤(pán)的事件就是KEYDOWN,釋放某個(gè)鍵盤(pán)的事件就是KEYUP。對(duì)前面的示例稍作修改,以便可以通過(guò)方向鍵來(lái)移動(dòng)文本“HelloWorld !”,還可以通過(guò)Esc 鍵來(lái)關(guān)閉窗口。參見(jiàn)程序清單15.15.py。事件鼠標(biāo)事件Pygame中,當(dāng)在窗口中按下鼠標(biāo)時(shí)會(huì)觸發(fā)MOUSEBUTTONDOWN事件,當(dāng)釋放鼠標(biāo)時(shí)會(huì)觸發(fā)MOUSEBUTTONUP事件,當(dāng)鼠標(biāo)移動(dòng)經(jīng)過(guò)窗口時(shí)會(huì)觸發(fā)MOUSEMOTION事件。一個(gè)示例——如果用戶(hù)點(diǎn)擊鼠標(biāo)左鍵,就會(huì)在點(diǎn)擊的地方畫(huà)一個(gè)黃色的小圓點(diǎn),如果點(diǎn)擊鼠標(biāo)右鍵,就會(huì)清空屏幕。參見(jiàn)程序清單15.16.py。聲音在游戲中,我們常常需要通過(guò)背景音樂(lè)來(lái)烘托一種氛圍,或者通過(guò)某種音效來(lái)表達(dá)一種游戲狀態(tài)。通過(guò)調(diào)用pygame.mixer.Sound()構(gòu)造函數(shù),來(lái)創(chuàng)建一個(gè)pygame.mixer.Sound 對(duì)象。它接受一個(gè)字符串參數(shù),這個(gè)字符串就是聲音文件的文件名。Pygame可以加載WAV、MP3或OGG等類(lèi)型的聲音文件。要播放聲音,調(diào)用Sound對(duì)象的play()方法。如果想要立即停止Sound對(duì)象的播放,調(diào)用stop() 方法。stop() 方法沒(méi)有參數(shù)。參見(jiàn)程序清單15.17.py。彈球游戲綜合前面介紹的Pygame基礎(chǔ)編程功能,開(kāi)發(fā)一個(gè)簡(jiǎn)單的彈球游戲。鼠標(biāo)事件——移動(dòng)鼠標(biāo)來(lái)控制擋板,從而反彈彈球得分。鍵盤(pán)事件——當(dāng)一次游戲結(jié)束,如果還想玩游戲,可以點(diǎn)擊F1按鍵,重新開(kāi)始游戲。圖像和字體——生命數(shù)和得分都會(huì)顯示在窗口的頂部。音樂(lè)——這款游戲有背景音樂(lè)。參見(jiàn)程序清單15.18.py。練習(xí)1.使用Pygame,創(chuàng)建一個(gè)新的窗口,以白色作為窗體背景,并且在窗口中繪制一個(gè)粉色(RGB值為255,192,203)的橢圓形。2.使用Pygame,創(chuàng)建一個(gè)新的窗口,以黑色作為窗體背景,將你的名字以白色顯示在窗口,并且當(dāng)點(diǎn)擊鼠標(biāo)的時(shí)候,名字可以隨著鼠標(biāo)移動(dòng)。 展開(kāi)更多...... 收起↑ 資源預(yù)覽 縮略圖、資源來(lái)源于二一教育資源庫(kù)