Python?pygame項(xiàng)目實(shí)戰(zhàn)英雄動(dòng)畫特效實(shí)現(xiàn)
1. 英雄的簡單動(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)->意味著游戲的正式開始
# 1. 定義rect記錄飛機(jī)的初始位置
hero_rect = pygame.Rect(300, 500, 102, 126)
# 游戲循環(huán)->意味著游戲的正式開始
while True:
# 希望無限循環(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)文章
pandas dataframe rolling移動(dòng)計(jì)算方式
在Pandas中,rolling()方法用于執(zhí)行移動(dòng)窗口計(jì)算,常用于時(shí)間序列數(shù)據(jù)分析,例如,計(jì)算某商品的7天或1個(gè)月銷售總量,可以通過rolling()輕松實(shí)現(xiàn),該方法的關(guān)鍵參數(shù)包括window(窗口大?。?min_periods(最小計(jì)算周期)2024-09-09
如何使用VSCode愉快的寫Python于調(diào)試配置步驟
從我的使用經(jīng)驗(yàn)出發(fā),可以說VSCode用來寫Python真的是再合適不過了,你將體驗(yàn)到絲滑的編程體驗(yàn)和無限擴(kuò)展的可能。而且,如果你的項(xiàng)目是包含多種語言的,比如Web開發(fā),你不必再開多個(gè)編輯器和其他工具,因?yàn)檫@一切都可以在VSCode里完成了2018-04-04
解決Vscode中jupyter出現(xiàn)kernel dead問題
遇到VSCode中Jupyter Kernel Dead時(shí),可通過Anaconda Prompt安裝ipykernel解決,首先使用jupyter kernelspec list命令查看內(nèi)核,若發(fā)現(xiàn)缺少ipykernel,激活相應(yīng)虛擬環(huán)境,使用conda install ipykernel命令安裝,操作后,VSCode中Jupyter應(yīng)能正常運(yùn)行2024-09-09
Python?+?Tkinter連接本地MySQL數(shù)據(jù)庫簡單實(shí)現(xiàn)注冊(cè)登錄
這篇文章主要介紹了Python?+?Tkinter連接本地MySQL數(shù)據(jù)庫簡單實(shí)現(xiàn)注冊(cè)登錄。下面文章著情介紹,需要的小伙伴可以參考一下2022-01-01
解決django后臺(tái)樣式丟失,css資源加載失敗的問題
今天小編就為大家分享一篇解決django后臺(tái)樣式丟失,css資源加載失敗的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-06-06

