-3

所以我一直在制作一个小游戏来测试自己,但我似乎根本无法更新分数,我能帮忙吗?编辑:很抱歉这个问题没有具体说明,当小行星经过屏幕时,第一个给出十分但之后分数没有上升时,问题是什么?我认为这是这段代码的问题,我希望在小行星从屏幕下方通过后,小行星被删除,然后得分增加 10 分。我也是 Livewires 模块。

class Asteroid(games.Sprite):
    """
    A asteroid which falls through space.
    """ 
    image = games.load_image("asteroid_med.bmp")
    speed = 1

    def __init__(self, x, y = 10):
        """ Initialize a asteroid object. """
        super(Asteroid, self).__init__(image = Asteroid.image,
                                    x = x, y = y,
                                    dy = Asteroid.speed)
        self.score = games.Text(value = 0, size = 25, color  = color.green,
                                top = 5, right = games.screen.width-10)

        games.screen.add(self.score)


    def update(self):
        """ Check if bottom edge has reached screen bottom. """
        self.add_score()

    def add_score(self):
        if self.bottom > games.screen.height:
            self.score.value+=10
            self.score.right = games.screen.width - 10
            self.destroy()
4

3 回答 3

0

让小行星调度一个事件或其他可以更新全局对象中分数的东西将是一个更好的设计。目前,小行星本身正在跟踪分数,但由于它被摧毁,这不起作用。

于 2013-10-07T16:59:16.077 回答
0

增加分数后,您正在破坏对象。

于 2013-10-07T16:56:52.080 回答
0

您在更新其分数后销毁该对象,并且该分数似乎是该对象的一个​​实例变量。您应该尝试将分数设为静态成员,而不是创建全局变量。这将使您的分数在小行星的每个实例中都保持不变。

http://linuxwell.com/2011/07/21/static-variables-and-methods-in-python/

于 2013-10-07T17:07:43.583 回答