所以我一直在做一个小游戏只是为了测试自己,我似乎无法让分数更新,我可以请一些帮助吗?编辑:很抱歉这个问题没有特别说明,当小行星越过屏幕时问题是什么,第一个给出10分但是之后分数没有上升?我认为这段代码是一个问题,我想要它,所以在小行星传递到屏幕下方后,小行星被删除,然后它会给分数增加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()
答案 0 :(得分:0)
你在增加分数后就会摧毁对象。
答案 1 :(得分:0)
让小行星调度事件或更新全局对象中的分数是一种更好的设计。目前,小行星本身正在跟踪得分,由于它被摧毁,因此不起作用。
答案 2 :(得分:0)
您在更新其分数后销毁该对象,并且该分数似乎是该对象的实例变量。您应该尝试将得分设为静态成员,而不是创建全局变量。这将使你的分数在小行星的每个实例中都持续存在。
http://linuxwell.com/2011/07/21/static-variables-and-methods-in-python/