乐趣区

关于python:06动图的本质快起来给我走两步python游戏编程红伞伞

申明:原创不易,未经许可,不得转载

0. 前言

hello,小伙伴们!我还是带你们一起写游戏的猫姐。
明天是这个游戏的,第 6 集了!上一集,咱们给游戏配角换了个马甲,将小方块变成了小男孩!明天咱们要让,小男孩的双脚,灵便的动起来,成果是这样的!

1. 动图的原理

咱们让小男孩的双脚动起来后,在视觉上,就感觉小男孩在走路一样!
动图的基本原理 就是多张图片不停地播放!
这里咱们用三张图片,在 image 目录下,我曾经筹备好了 小男孩的三张图片,咱们把原先的 player.png 命名为 player0.png,后两张图片是player1.png,player2.png
咱们回来写代码。
在这里,咱们还是批改 Player 类,咱们用 for 循环,把这三张图片都load 进来,load 进来的图片,咱们将这三个图片对像,都放到 self.plays 这个列表中,这里我先写完代码,再一行一行的解说。

self.plays = []
for i in range(3):
    image_filename = "./images/player" + str(i) + ".png"
    image = pygame.image.load(image_filename)
    self.plays.append(image)

通过 for i in range(3):
咱们拼接出男孩图片的门路,而后赋值给 image_filename,
再应用 pygame.image.load 函数 来导入这张图片,括号外面传入的是图片的门路。
大家有没有发现,这个 pygame.image.load 函数我曾经用过很屡次了,心愿大家记住这个导入图片的函数。
最初,通过 self.plays 的 append 函数把图片都追加到列表中。

接下来,咱们要在 update 函数中,用 blit 函数,轮流绘制这三张小男孩的图片,咱们只须要把 self.image 换成 self.plays[self.image_index] 就 ok 了!

    def update(self):
        screen.blit(self.plays[self.image_index], self.rect)

这里用到了一个新的变量 self.image_index,所以咱们要在init 函数中将它赋值为 0。

self.image_index = 0

咱们运行程序,看下成果。能够看到,小男孩的双脚,没有任何变动!

怎么回事呢?因为 image_index 始终为 0,所以显示的始终是 player0.png 这张图片。

咱们还须要让 image_index 这个变量,不停的取 0,1, 2 这三个值。
所以,咱们须要写一个更新 image_index 变量的函数:

def update_image_index(self):
    self.image_change_time += 1
    if self.image_change_time > 2:
        self.image_change_time = 0
        self.image_index = (self.image_index + 1) % 3

下面用到了一个新的变量,self.image_change_time,所以在 init 函数中,咱们将 image_change_time 赋值为 0:

self.image_change_time = 0

最初,咱们在 update 函数中加一行代码,调用 update_image_index 函数。

def update(self):
    self.update_image_index()
    screen.blit(self.plays[self.image_index], self.rect)

好了,咱们运行游戏,看下成果。

能够看到,小男孩的双脚曾经动起来了。
有意思吧,真是满满的成就感啊!

关注猫姐,下一集咱们来搞从天而降的蘑菇!

退出移动版