python - 需要帮助在 PyGame 中使用 for 循环加载图像

标签 python pygame

<分区>

我正在尝试根据一个值在 PyGame 中加载图像,例如当值为 6 时,它会将图像设置为图像编号 6。

def bar():
    global ink
    global screen
    global barImg
    ink = 0
    for ink in range(0,100):
        barImg = pygame.image.load(f'inkbar\load{ink}.png')
        screen.blit(barImg,(100,100))
        pygame.display.update()

ink 的值在另一个函数中发生了变化,我知道那部分是有效的。每个图像都被称为 load0.png、load1.png 等等,直到 100,但图像从未出现在屏幕上。我已经通过注释掉 for 循环并将 barImg 设置为特定图像来测试将图像显示在屏幕上,它确实将图像显示在屏幕上。

        px, py = pygame.mouse.get_pos()
        if pygame.mouse.get_pressed() == (1,0,0):
            pygame.draw.rect(screen, (255,255,255), (px,py,10,10))
            
            ink+=0.5
            math.ceil(ink)
            print(ink)

这是允许用户绘图的函数的一部分。这部分检测鼠标点击并增加墨水的值。我尝试在墨水增加的情况下调用 bar(),但这降低了绘制速度。

我删除了 bar() 函数

            ink+=1
            math.ceil(ink)
            print(ink)
            for ink in range(1,100):
                barImg = pygame.image.load(f'inkbar\load{ink}.png')
                screen.blit(barImg,(100,100))

这是我用过的替代品,但现在墨水不会增加 1,它会立即从 1 到 100,并导致大量延迟。

也许名称中带有“load”的图片有问题?

最佳答案

我有一些代码可以运行我知道有效的动画帧

代码:

frame_index += animation_speed
if frame_index >= len(animation):
  self.frame_index = 0
image = pygame.image.load(f'Ink ({int(frame_index)}).png')
screen.blit(image, (0,0))
pygame.display.update()

基本上您需要两个变量,一个帧索引和一个动画速度。索引是您要加载的第一张图片的编号。在本例中为 Ink 0.png 或任何名称。所以你的帧索引将为 0。这将增加你的动画速度变量。这个值越高,你的动画就会越快。越低,越慢。循环后它会返回到 0 如果这就是你想要的。如果您不想这样,则只需删除 if 语句即可。

执行此操作后,还要检查你是否没有填满屏幕,因为你想看的任何内容都会立即被覆盖。让我知道这是否有效。

关于python - 需要帮助在 PyGame 中使用 for 循环加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70919876/

相关文章:

python - 如何将三元组 DataFrame 转换为没有重复行的新 DataFrame?

python - 我怎样才能让 pygame 中的按钮正常工作? (刽子手游戏)

Python套接字等待

python - 我如何知道 Pygame 中的圆和矩形是否被触摸?

python - “pygame.Surface”对象不可调用

python - 如何在 Python 中制作相同大小的数组

python - seaborn FacetGrid : How to leave proper space on top for suptitle

python - 将 Python 循环方法转换为嵌套循环

python - 类型错误 : not enough arguments for format string while importing CSV to MySQL using Python

python - 如何在 python-pygame 中添加背景图像