在Pygame中获得一定分数后,如何让精灵速度提升

时间:2013-10-21 15:43:53

标签: pygame livewires

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

Asteroid类,代码在更新方法中。

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)

1 个答案:

答案 0 :(得分:0)

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是否会设置所有小行星的速度。如果没有,你将不得不想方设法宣传速度必须增加到所有其他活跃小行星的事实。