1

我有一个游戏,我需要在路径中每 1350 毫秒后生成一个敌人。敌人只有在我点击开始按钮后才开始出现。

时间间隔代码:

sendEnemy = 0

def enemy_object_creation(sprite_list, health):
    global sendEnemy

    if pygame.time.get_ticks() >= sendEnemy:
        foe = Enemy(sprite_list, health)
        enemies.add(foe)

        sendEnemy += 1350

现在在这里,当我在大约 5 秒后单击开始按钮时,一开始有大量敌人涌入,然后它们又开始顺利进入。我点击开始按钮的时间越多,开始时一起生成的敌人就越多。我不知道该怎么办。

帮助将不胜感激。

4

1 回答 1

2

在 pygame 中,可以通过调用 获取系统时间pygame.time.get_ticks(),它返回自调用以来的毫秒数pygame.init()。见pygame.time模块。

当点击开始按钮时,您需要计算第一个敌人必须生成的时间。

在全局命名空间中指定sendEnemy变量:

sendEnemy = 0

设置初始时间值,当单击按钮时:

if clicked:
    global sendEnemy
    current_time = pygame.time.get_ticks()
    sendEnemy = current_time 

sendEnemy如果大于 0,但小于当前时间,则生成新敌人:

def enemy_object_creation(sprite_list, health):
    global sendEnemy

    if 0 < sendEnemy <= pygame.time.get_ticks():
        foe = Enemy(sprite_list, health)
        enemies.add(foe)

        sendEnemy += 1350

如果您想阻止敌人生成,请设置sendEnemy = 0.


或者,您可以根据当前时间计算下一个敌人必须生成的时间。但是,这会导致稍微不准确,因为代码不会按时运行,而是在几毫秒后运行:

def enemy_object_creation(sprite_list, health):
    global sendEnemy

    current_time = pygame.time.get_ticks()
    if sendEnemy <= current_time:
        foe = Enemy(sprite_list, health)
        enemies.add(foe)

        sendEnemy = current_time + 1350
于 2021-01-01T12:10:46.553 回答