Python?pygame項(xiàng)目實(shí)戰(zhàn)英雄動(dòng)畫特效實(shí)現(xiàn)
1. 英雄的簡(jiǎn)單動(dòng)畫實(shí)現(xiàn)
需求:
- 在游戲初始化定義一個(gè)
pygame.Rect
的變量記錄英雄的初始位置 - 在游戲循環(huán)中每次讓英雄的
y-1
--向上移動(dòng)(y值減1相當(dāng)于向屏幕上方上移動(dòng)1) - y<=0將英雄移動(dòng)到屏幕的底部
友情提示:
- 每一次調(diào)用
update()
方法之前,需要把所有的游戲圖像都重新繪制一遍 - 而且應(yīng)該最先重新繪制背景圖像
2. 代碼演示
案例大體思路概括:
- 在游戲循環(huán)上方,定義rect記錄飛機(jī)的初始位置
- 在游戲循環(huán)內(nèi)部,修改飛機(jī)位置:讓飛機(jī)的y屬性-1
- 調(diào)用blit方法繪制圖像(注意:繪制圖像的時(shí)候,每一次循環(huán)都要先繪制背景圖在繪制飛機(jī),這樣背景圖就會(huì)把上一次繪制的飛機(jī)遮擋住,所以就不會(huì)在屏幕上留下上一次飛機(jī)的剪影)
- 調(diào)用update方法更新顯示,就能看到連貫的動(dòng)畫效果了
具體代碼演示如下所示:
import pygame pygame.init() # 創(chuàng)建游戲的窗口 640*642 screen = pygame.display.set_mode((640, 642)) # 繪制背景圖像 bg = pygame.image.load("./飛機(jī)大戰(zhàn)資料包/images/background1.jpg") screen.blit(bg, (0, 0)) # 繪制英雄的飛機(jī) hero = pygame.image.load("./飛機(jī)大戰(zhàn)資料包/images/me1.png") screen.blit(hero, (300, 500)) # 可以在所有繪制工作完成之后,統(tǒng)一調(diào)用update方法 pygame.display.update() # 創(chuàng)建時(shí)鐘對(duì)象 clock = pygame.time.Clock() # 游戲循環(huán)->意味著游戲的正式開(kāi)始 # 1. 定義rect記錄飛機(jī)的初始位置 hero_rect = pygame.Rect(300, 500, 102, 126) # 游戲循環(huán)->意味著游戲的正式開(kāi)始 while True: # 希望無(wú)限循環(huán)內(nèi)部的代碼每秒鐘重復(fù)循環(huán)60次 # 可以指定循環(huán)體內(nèi)部的代碼執(zhí)行的頻率 clock.tick(60) # 2. 修改飛機(jī)的位置 hero_rect.y -= 1 # 3. 調(diào)用blit方法繪制圖像 # 先繪制背景,在繪制飛機(jī),就不會(huì)留下殘影(背景把上一次的飛機(jī)遮擋) screen.blit(bg, (0, 0)) screen.blit(hero, hero_rect) # 4. 調(diào)用update方法更新顯示 pygame.display.update() pygame.quit()
代碼運(yùn)行結(jié)果如下圖所示:運(yùn)行結(jié)果為動(dòng)畫效果,大體概括如下:在屏幕上方可以看到,英雄飛機(jī)不斷向上移動(dòng),每次移動(dòng)距離1,慢慢移動(dòng)到屏幕上方,最終移出屏幕。
以上就是Python pygame項(xiàng)目實(shí)戰(zhàn)英雄動(dòng)畫特效實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于Python pygame英雄動(dòng)畫的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python列表返回重復(fù)數(shù)據(jù)的下標(biāo)
這篇文章主要介紹了python列表返回重復(fù)數(shù)據(jù)的下標(biāo),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02Python基于socket實(shí)現(xiàn)TCP/IP客戶和服務(wù)器通信
本主要介紹了Python socket網(wǎng)絡(luò)編程TCP/IP服務(wù)器與客戶端通信的相關(guān)資料,這里對(duì)Scoket 進(jìn)行詳解并創(chuàng)建TCP服務(wù)器及TCP 客戶端實(shí)例代碼,需要的朋友可以參考下2021-06-06Python獲取當(dāng)前腳本文件夾(Script)的絕對(duì)路徑方法代碼
在本篇文章中小編給各位整理了關(guān)于Python獲取當(dāng)前腳本文件夾(Script)的絕對(duì)路徑實(shí)例代碼內(nèi)容,有需要的朋友們學(xué)習(xí)下。2019-08-08詳解Python中的分組函數(shù)groupby和itertools)
這篇文章主要介紹了Python中的分組函數(shù)groupby和itertools)的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-07-07opencv-python 提取sift特征并匹配的實(shí)例
今天小編就為大家分享一篇opencv-python 提取sift特征并匹配的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12python計(jì)算Content-MD5并獲取文件的Content-MD5值方式
這篇文章主要介紹了python計(jì)算Content-MD5并獲取文件的Content-MD5值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04numpy.bincount用于復(fù)數(shù)權(quán)重的方法
numpy.bincount是NumPy庫(kù)中的一個(gè)函數(shù),它用于計(jì)算整數(shù)數(shù)組中每個(gè)值的出現(xiàn)次數(shù),numpy.bincount函數(shù)在統(tǒng)計(jì)整數(shù)數(shù)組中每個(gè)值的出現(xiàn)次數(shù)或權(quán)重和時(shí)非常有用,本文給大家介紹numpy.bincount如何用于復(fù)數(shù)權(quán)重,感興趣的朋友跟隨小編一起看看吧2023-11-11