如何使pygame更快加载图像?

时间:2019-04-13 15:18:16

标签: python image python-2.7 performance pygame

我正在尝试使用pygame制作游戏,我需要一些角色来左右移动。为此,每次用户按住“向左”按钮时,我都会再次绘制背景图像,并在该字符的上一个位置的左侧向左绘制一个字符,当他按住“向右”按钮时,我将执行类似的操作。问题是图像加载速度不够快。例如,当我运行代码并按住“向左”按钮时,子画面确实会向左移动,但似乎消失了很短的时间(大约0.2秒),并且移动不是连续的(也就是说,子画面消失了) ,我的意思是有一段时间我可以“暂停”屏幕,只看到背景图像,而没有精灵。我希望运动是连续的,因为它现在看起来并不好。我试图更新我的时钟滴答,但要让精灵连续移动,它必须非常缓慢地移动,我也不想这样做。这是我的代码:

run = True

while run:
    clock.tick(60)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        x = x-vel
        screen.blit(img, (0, 0))
        pygame.display.flip()
        screen.blit(ship_img, (x, y))
        pygame.display.flip()
    if keys[pygame.K_RIGHT]:
        x = x + vel
        screen.blit(img, (0, 0))
        pygame.display.flip()
        screen.blit(ship_img, (x, y))
        pygame.display.flip()

(“ vel”是一个常数,在我的代码中,其值为5)

该如何解决?
我要制作的游戏是THIS,如果向下滚动,您会看到该家伙的飞船不断移动,因此有可能做到这一点。

1 个答案:

答案 0 :(得分:0)

从您的问题表达方式来看,您似乎希望您的playerobject无缝移动。如果是这样的话,还有更好的方法去做!

首先为您的播放器对象在x轴上移动的速度创建一个变量。 如果您的playerobject被定义为一个类,请确保在声明之前将其称为self。

speedx = 0

此后,只需将speed变量更改为所需的任何数字,即可替换事件中的所有代码。

keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        speedx = insert number here

这就是我通常的处理方式。希望对您有帮助!