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

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

0.前言

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

06:动图的本质!快起来,给我走两步#python游戏编程#红伞伞_第1张图片

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

我们运行程序,看下效果。可以看到,小男孩的双脚,没有任何变化!

06:动图的本质!快起来,给我走两步#python游戏编程#红伞伞_第2张图片

怎么回事呢?因为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)

好了,我们运行游戏,看下效果。

06:动图的本质!快起来,给我走两步#python游戏编程#红伞伞_第3张图片

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

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

你可能感兴趣的:(pythonpygame)