理解游戲循環(huán)和游戲時(shí)鐘
現(xiàn)在英雄飛機(jī)已經(jīng)被繪制到屏幕上了,怎樣能讓飛機(jī)移動(dòng)呢?
游戲中的動(dòng)畫(huà)實(shí)現(xiàn)原理
跟電影的原理類似划鸽,游戲中的動(dòng)畫(huà)效果尽棕,本質(zhì)上是快速的在屏幕上繪制圖形,一般在電腦上每秒繪制60次就能達(dá)到非常連續(xù)高品質(zhì)的動(dòng)畫(huà)效果
游戲循環(huán)
游戲循環(huán)的開(kāi)始就意味著游戲的正式開(kāi)始
游戲循環(huán)
- 保證游戲不會(huì)直接退出
- 變化圖像位置——?jiǎng)赢?huà)效果
- 每隔1/60移動(dòng)一下所有圖像的位置
- 調(diào)用
pygame.display.update()
更新屏幕顯示
- 檢測(cè)用戶交互——按鍵味赃、鼠標(biāo)等
游戲時(shí)鐘
-
pygame
專門提供了一個(gè)類pygame.time.Clock
可以非常方便的設(shè)置屏幕繪制速度——刷新頻率 - 要使用時(shí)鐘對(duì)象需要兩步:
1) 在游戲初始化創(chuàng)建一個(gè)時(shí)鐘對(duì)象
2) 在游戲循環(huán)中讓時(shí)鐘對(duì)象調(diào)用tick(幀率)
方法 -
tick
方法會(huì)根據(jù)上次被調(diào)用的時(shí)間掀抹,自動(dòng)設(shè)置游戲循環(huán)中的延時(shí)游戲循環(huán)與游戲時(shí)鐘
英雄飛機(jī)的簡(jiǎn)單動(dòng)畫(huà)實(shí)現(xiàn)
需求:
- 在游戲初始化定義一個(gè)
pygame.Rect
的變量記錄英雄飛機(jī)的初始位置 - 在游戲循環(huán)中每次讓英雄飛機(jī)的y-1——向上移動(dòng)
- y <= 0將英雄飛機(jī)移動(dòng)到屏幕的底部
提示:每一次調(diào)用update()
方法之前,需要把所有的游戲圖像都重新繪制一遍心俗,而且應(yīng)該最先繪制背景圖像
思考:如何讓英雄飛機(jī)完全從上方飛出屏幕后傲武,再將飛機(jī)移動(dòng)到屏幕的底部?
英雄飛機(jī)的移動(dòng)1
英雄飛機(jī)的移動(dòng)2