更新時間:2021-11-04 來源:黑馬程序員 瀏覽量:
眾所周知,游戲啟動后一般由玩家手動關(guān)閉,但目前的程序在開啟圖形窗口并設(shè)做標(biāo)題后退出,這是因為程序已經(jīng)執(zhí)行完畢。若要使游成保持運(yùn)行,需要在程序中添加一個無限循環(huán),循環(huán)代碼如下:
while True: pass
在pygame display.set camption(‘?dāng)?shù)字推盤’)之后添加以上循環(huán)代碼,程序?qū)⒁恢北3诌\(yùn)行。
圖形化游戲的畫面通常是動態(tài)的,游戲中如何實現(xiàn)動畫效果呢?這其實是利用了“視覺暫留”現(xiàn)象。研究表明,人眼在觀察景物時,光信號傳入大腦神經(jīng),需經(jīng)過一段短暫的時間,光的作用結(jié)束后,視覺形象并不立即消失,而是殘留在視網(wǎng)膜上。視覺的這一現(xiàn)象被稱為“視覺暫留”。電影實際上也應(yīng)用了這個原理一電 影膠片以每秒24格畫面勻速運(yùn)動,一系列靜態(tài)畫面就會因視覺暫留而造成一種連續(xù)的視覺印象,形成逼真的動感。
一般情況下,計算機(jī)上一秒繪制60幀(Frame)便能夠達(dá)到非常連續(xù)、高品質(zhì)的動畫效果。換言之,窗口中刷新圖像的頻率只要不低于每秒60幀,就能夠達(dá)到我們對動畫效果的預(yù)期。修改循環(huán)代碼,在循環(huán)體中通過數(shù)值累加可直觀地觀察循環(huán)體的執(zhí)行頻率,修改后的循環(huán)代碼如下:
i = 0 while True: Print(i) i+=1
運(yùn)行修改后的程序,可觀察到命令行1秒后打印的數(shù)值遠(yuǎn)遠(yuǎn)超出了60,這說明循環(huán)體的執(zhí)行頻率非常高。過高的頓率意味著超高的負(fù)荷,通過任務(wù)管理器觀察計算機(jī)性能,可注意到僅多運(yùn)行了這一個程序,計算機(jī)CPU的占用率便增加了約20%。為了解決頓率過高的問題,需在程序中設(shè)置游戲時鐘。pgeme的time模塊專門提供了一個Clok類,通過該類的tiol )方法可以方便地設(shè)置游戲循環(huán)的執(zhí)行頻率,具體操作如下:
FPSCLOCK - pygame.time.Clock() #創(chuàng)建Clock對象 FPSCLOCK.tick(FPS) #為Clock對象設(shè)置幀率 修改程序7_pg_test.py中的代碼,為其添加幀率控制語句,修改后的程序如下: ... FPS = 60 #預(yù)設(shè)頻率 def main(): pygame.init() #初始化所有模塊 FPSCLOCK = pygame.time.Clock() #創(chuàng)建Clock對象 i=0 while True: 1 = i + 1 print(i) FPSCLOCK.tick(FPS) #控制幀率 pygame.display.update () Pygame.quit() #卸載所有模塊 if_ name_==_main_': main()
經(jīng)過如上修改后,程序中while循環(huán)內(nèi)的代碼由高頻執(zhí)行轉(zhuǎn)變?yōu)?秒執(zhí)行FPS(60)次。
執(zhí)行以上程序,通過任務(wù)管理器對比增加幀率控制語句前后CPU的占用情況,可發(fā)現(xiàn)CPU的使用率大大降低,如圖7-3所示。
添加控制語句后
猜你喜歡:
while循環(huán)嵌套和for循環(huán)嵌套語法格式介紹【Python學(xué)習(xí)教程】
為什么要使用foreach循環(huán)?它有哪些優(yōu)點和局限性?
python中的for循環(huán)詳細(xì)介紹【代碼演示】