微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

pygame.time.get_ticks() 的问题

如何解决pygame.time.get_ticks() 的问题

我有一个游戏,我需要在路径中每 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 秒后单击开始按钮时,大量敌人在开始时涌入,然后又开始顺利进入。我点击开始按钮的时间越长,开始时生成的敌人就越多。我不知道该怎么办。

将不胜感激。

解决方法

在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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。