Python pygame项目实战英雄动画特效实现

作者:ZacheryZHANG 时间:2021-02-22 21:07:50 

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项目实战英雄动画特效实现

来源:https://juejin.cn/post/7130621147619541005

标签:Python,pygame,英雄,动画
0
投稿

猜你喜欢

  • 如何实现上下翻页?

    2010-05-24 18:29:00
  • python连接PostgreSQL数据库的过程详解

    2023-08-24 03:42:31
  • JavaScript贪吃蛇的实现代码

    2023-08-31 04:41:44
  • JavaScript版无组件上传类

    2007-10-06 23:16:00
  • prototype.js常用函数及其用法

    2007-11-21 20:47:00
  • Python+Qt身体特征识别人数统计源码窗体程序(使用步骤)

    2021-06-03 10:40:54
  • 301转向和网址规范化

    2007-09-26 14:00:00
  • word-wrap同word-break的区别

    2007-10-24 20:08:00
  • asp全面解析Server对象

    2008-10-19 17:24:00
  • python使用nibabel和sitk读取保存nii.gz文件实例

    2021-03-11 16:12:53
  • FSO如何一行行地读取文件?

    2010-06-10 18:40:00
  • css行高:line-height属性详解

    2008-06-24 11:42:00
  • 趣用文化元素

    2009-09-03 11:53:00
  • MySQL数据库性能优化妙招

    2009-03-20 13:13:00
  • JS的编译和执行顺序

    2009-02-01 18:42:00
  • 网页设计标准尺寸参考

    2007-12-29 20:42:00
  • 阿里云CentOS7搭建Apache+PHP+MySQL环境

    2023-11-23 02:44:59
  • 使用python-cv2实现Harr+Adaboost人脸识别的示例

    2022-03-16 01:05:10
  • 修改 CentOS 6.x 上默认Python的方法

    2023-08-07 10:02:59
  • python 把文件中的每一行以数组的元素放入数组中的方法

    2023-04-15 23:14:37
  • asp之家 网络编程 m.aspxhome.com