0

在我的游戏中玩家有避免小行星,当小行星撞击屏幕底部时它被摧毁并且分数增加十,但我希望小行星速度在玩家达到一定分数后增加但每次我这样做我使用小行星的代码只是出现故障,分数开始迅速增加,有人可以帮我吗?

Asteroid 类,代码在 update 方法中。

class Asteroid(games.Sprite):
global lives
global score
global inventory
"""
A asteroid which falls through space.
"""

image = games.load_image("asteroid_med.bmp")
speed = 2

def __init__(self, x,image, y = 10):
    """ Initialize a asteroid object. """
    super(Asteroid, self).__init__(image = image,
                                x = x, y = y,
                                dy = Asteroid.speed)


def update(self):
    """ Check if bottom edge has reached screen bottom. """
    if self.bottom>games.screen.height:
        self.destroy()
        score.value+=10

    if score.value == 100:
        Asteroid.speed+= 1

分数变量(如果需要)

score = games.Text(value = 0, size = 25, color = color.green,
               top = 5, right = games.screen.width - 10)
games.screen.add(score)
4

1 回答 1

1
if score.value == 100:
    Asteroid.speed += 1

对于得分为 的每一帧100,您将在小行星的速度上加 1。这意味着如果您的游戏以 60 fps 运行,1 秒后您的小行星的速度将增加 60。我是否正确假设这是事情开始“故障”的时候?

要纠正这个问题,您只需要在玩家得分达到 100 时增加速度,并确保它以反应方式发生:

if self.bottom > games.screen.height:
    self.destroy()
    score.value += 10

    # Check if the score has reached 100, and increase speeds as necessary
    if score.value == 100:
        Asteroid.speed += 1

从您的代码中不清楚是否Asteroid.speed会为所有小行星设置速度。如果没有,你将不得不想出一种方法来向所有其他活跃的小行星传播速度必须增加的事实。

于 2013-10-21T16:33:59.923 回答