【问题标题】:Animation in with a list of images in PygamePygame中带有图像列表的动画
【发布时间】:2018-06-30 13:52:39
【问题描述】:

我对我的 Flappy Bird 克隆很感兴趣。如果你不知道这个游戏,当小鸟飞起来时会有一个动画发生。

以下是我尝试制作动画的大致思路: self.x 和 self.y 指的是照片的位置

这是我的代码:

def move_up_animation(self):
    #list of bird photos to animate
    animation_list = ['1.tiff','2.tiff','3.tiff','4.tiff','5.tiff']

    for i in range(len(animation_list)):
        if self.y - 1 > 0: # checks if the bird is within the frame
            self.y = self.y - 1 #changes the bird's, allowing the bird to fly up      
            self.image = pygame.image.load(animation[i]) 
            self.display_image()

我尝试了 time.sleep(1) 但它不起作用。

我不知道这段代码是如何工作的:

 for i in range(5):
    print(i)
    time.sleep(1)

【问题讨论】:

  • 您无法使用 for looptime.sleep 执行此操作。您必须将第一张图像放在屏幕上,然后 mainloop 必须进行一个循环并返回给您将第二张图像放在屏幕上的功能。然后 mainloop 必须进行另一个循环并返回给您将第三个图像放在屏幕上的函数,等等。
  • 不要再使用time.sleep了。
  • 考虑使用让你的鸟成为精灵。 (sprite tutorial)
  • 每个游戏帧都会将小鸟精灵更改为下一个动画帧。

标签: animation pygame


【解决方案1】:

“我不知道这段代码是如何工作的”:

for i in range(5):
    print(i)
    time.sleep(1)"

它的工作原理是这样的:for 将查看它是在 (0, 5) 范围内的变量 I 是真还是假,而不是 5。如果是真将运行打印命令。

time.sleep我不知道它是如何工作的。

要移动小鸟,您需要为飞行和重力添加和减少 y 轴。我希望你知道怎么做(就像按空格它会飞,不按它会掉下来)。

你可以使用 if 来代替使用 for。

if K_SPACE:
    y -= 12

它会让小鸟的y轴增加12。我希望这会像原来的跳跃游戏一样。为了使其流畅,您可以在 for 中使用 .tick() 模块,但我认为它确实没有必要。

【讨论】:

    猜你喜欢
    • 2012-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-10
    • 2023-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多