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

2022-08-12 14:51:08
目录
1. 英雄的简单动画实现2. 代码演示

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英雄动画的资料请关注易采站长站其它相关文章!