Pygame | blit图像一直在跳跃

时间:2016-11-11 18:46:07

标签: python class pygame

大家好,我想知道我是否可以得到一些帮助。我在python中学习了类,并试图将它合并到我当前的uni项目中。

以下是该类的代码以及它使用的一些变量

class Asteroid():
    def __init__(self, char, startX, startY):
        self.char = char
        self.startX = startX
        self.startY = startY
        self.drawChar()

    def drawChar (self):
        self.space = pygame.image.load (self.char)
        self.space = self.space.convert_alpha()
        gameDisplay.blit(self.space,
            (random.randint(0,display_width),
            random.randint(0,display_height)))

这个类基本上包含了我需要加载的所有数据' Asteroids'。

下面的

是实际使用该类的主代码的一部分:

Asteroid(random.choice(asteroid),200,300 )

以下是变量asteroid的代码:

asteroid = [
    'Sprites/Asteroid1.png',
    'Sprites/Asteroid2.png',
    'Sprites/Asteroid3.png']

所以出现的实际问题是,当我运行代码时,小行星会被打到表面,但是它们会在整个地方跳跃。不仅如此,而且不同的小行星正在被击中,而不是一颗被选中的小行星。为什么会这样?

另一方面,小行星也有白色背景,我尝试转换它们,但这并没有帮助。

1 个答案:

答案 0 :(得分:1)

因为你告诉它。代码

gameDisplay.blit(self.space,
            (random.randint(0,display_width),
             random.randint(0,display_height)))

字面上说“在随机位置将图像显示在显示屏上”。具体来说,random.randint(0,...)选择从零到屏幕大小的随机位置。

请记住,每次需要更新屏幕时都会调用此显示代码,而不仅仅是在您启动游戏时。要以静态坐标显示,请将坐标设为静态:

gameDisplay.blit(self.space, (self.startX, self.startY))