Python pygame如何实现英雄动画特效
这篇文章主要讲解了“Python pygame如何实现英雄动画特效”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python pygame如何实现英雄动画特效”吧!
1. 英雄的简单动画实现
需求:
在游戏初始化定义一个
pygame.Rect
的变量记录英雄的初始位置在游戏循环中每次让英雄的
y-1
--向上移动(y值减1相当于向屏幕上方上移动1)y<=0将英雄移动到屏幕的底部
友情提示:
每一次调用
update()
方法之前,需要把所有的游戏图像都重新绘制一遍而且应该最先重新绘制背景图像
2. 代码演示
案例大体思路概括:
在游戏循环上方,定义rect记录飞机的初始位置
在游戏循环内部,修改飞机位置:让飞机的y属性-1
调用blit方法绘制图像(注意:绘制图像的时候,每一次循环都要先绘制背景图在绘制飞机,这样背景图就会把上一次绘制的飞机遮挡住,所以就不会在屏幕上留下上一次飞机的剪影)
调用update方法更新显示,就能看到连贯的动画效果了
具体代码演示如下所示:
import pygame pygame.init() # 创建游戏的窗口 640*642 screen = pygame.display.set_mode((640, 642)) # 绘制背景图像 bg = pygame.image.load("./飞机大战资料包/images/background1.jpg") screen.blit(bg, (0, 0)) # 绘制英雄的飞机 hero = pygame.image.load("./飞机大战资料包/images/me1.png") screen.blit(hero, (300, 500)) # 可以在所有绘制工作完成之后,统一调用update方法 pygame.display.update() # 创建时钟对象 clock = pygame.time.Clock() # 游戏循环->意味着游戏的正式开始 # 1. 定义rect记录飞机的初始位置 hero_rect = pygame.Rect(300, 500, 102, 126) # 游戏循环->意味着游戏的正式开始 while True: # 希望无限循环内部的代码每秒钟重复循环60次 # 可以指定循环体内部的代码执行的频率 clock.tick(60) # 2. 修改飞机的位置 hero_rect.y -= 1 # 3. 调用blit方法绘制图像 # 先绘制背景,在绘制飞机,就不会留下残影(背景把上一次的飞机遮挡) screen.blit(bg, (0, 0)) screen.blit(hero, hero_rect) # 4. 调用update方法更新显示 pygame.display.update() pygame.quit()
代码运行结果如下图所示:运行结果为动画效果,大体概括如下:在屏幕上方可以看到,英雄飞机不断向上移动,每次移动距离1,慢慢移动到屏幕上方,最终移出屏幕。
感谢各位的阅读,以上就是“Python pygame如何实现英雄动画特效”的内容了,经过本文的学习后,相信大家对Python pygame如何实现英雄动画特效这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是蜗牛博客,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。版权声明:如无特殊标注,文章均为本站原创,转载时请以链接形式注明文章出处。
评论