停止时间而不冻结程序

z

在我的乒乓球游戏中,只要有人得分(球向左或向右发球),球的位置就会重置到屏幕中间,并且在移动之前会等待一秒钟。在那一秒钟里,我进行了一个小动画。

我的问题是:如果我在动画的中间暂停游戏,即使没有更新任何对象并且只绘制了暂停文本,时间也会持续滚动。如果我等待足够的时间,动画就会正确停止在我取消游戏暂停之后。这就是我的意思。这是球更新:

def update(self, dt):
        now = pygame.time.get_ticks() / 1000
        # if time elapsed since the ball got out >= BALL_WAIT_TIME
        if now - self._spawn_time >= BALL_WAIT_TIME:
            self.rect = self.calcnewpos(dt)
            self.handle_collision()
        # spawn animation
        else:
            step = 255 / (FPS * BALL_WAIT_TIME)
            value = int(self._frame * step)
            rgb = (value, value, value)
            self._draw_ball(rgb)
            self._frame += 1

来自http://pygame.org/docs/ref/time.html#pygame.time.get_ticks

pygame.time.get_ticks()

返回自从调用pygame.init()以来的千倍数。在初始化pygame之前,该值始终为0。

因此,即使在游戏暂停期间未进行任何绘制或更新,pygame.time.get_ticks()仍将返回自以来经过的时间pygame.init我该如何解决?抱歉,如果这很难理解,我将在需要时发布其余代码。

卡姆·杰克逊

好吧,好像您只是从当前时间中减去某个事件发生的时间一样。如果那是您检查自事件以来已经经过了多少时间的方法,那么游戏是否已暂停并不重要。如果事件发生,然后您将游戏暂停了10分钟,那么距离事件发生总是10分钟。

因此,考虑到这一点,您需要一些方法来仅在游戏运行时计算时间。也许球可能具有一个属性,该属性说明了球出场后的时间,并且只有在游戏不暂停的情况下才增加它。

编辑:类似:

class Ball:
    def spawn(self):
        self.sinceSpawn = 0

    def update(self, dt):
        if not gamePaused:
            self.sinceSpawn += dt
        if self.sinceSpawn >= BALL_WAIT_TIME:
            pass #Do something here

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

循环而不冻结程序?

来自分类Dev

在Javascript中移动(不冻结)日期/时间

来自分类Dev

如何停止Qt App冻结主程序?

来自分类Dev

如何停止Qt App冻结主程序?

来自分类Dev

Visual Basic循环而不冻结程序?

来自分类Dev

在长时间运行的过程中停止冻结GUI

来自分类Dev

WinForm应用程序停止运行并冻结Windows

来自分类Dev

在执行繁重的for循环时停止冻结应用程序

来自分类Dev

安装程序随机冻结,鼠标停止移动,ubuntu 无法安装

来自分类Dev

Worker / Child实例中的函数不返回,冻结程序

来自分类Dev

延迟事件处理程序而不冻结UI线程

来自分类Dev

C#WinForm应用程序UI长时间冻结

来自分类Dev

Qt测量冻结应用程序的渲染时间

来自分类Dev

C#WinForm应用程序UI长时间冻结

来自分类Dev

fetchmail不遵守守护程序时间

来自分类Dev

应用程序在iPhone 5c的主线程上冻结,但在iPhone 6s上不冻结

来自分类Dev

Cx_Freezing PySide,praw,要求应用程序冻结后停止工作

来自分类Dev

多次打印(cout)后,C ++程序停止(冻结,无错误,无退出)

来自分类Dev

给予mouse / keyboard / terminal / ctrl-c优先权,并停止冻结我的linux系统的程序

来自分类Dev

如何停止冻结并锁定任务管理器的应用程序?

来自分类Dev

在不冻结应用程序的情况下更新 UI 线程

来自分类Dev

在不冻结程序的情况下在后台执行某些操作

来自分类Dev

应用程序冻结,但CPU使用率随时间增加

来自分类Dev

一段时间后Arduino滚动文本程序冻结

来自分类Dev

当不启动apache ignite时如何停止应用程序?

来自分类Dev

一定时间后如何停止Python程序

来自分类Dev

一定时间后停止程序(包含递归函数)

来自分类Dev

应用程序冻结?

来自分类Dev

循环制作程序冻结

Related 相关文章

  1. 1

    循环而不冻结程序?

  2. 2

    在Javascript中移动(不冻结)日期/时间

  3. 3

    如何停止Qt App冻结主程序?

  4. 4

    如何停止Qt App冻结主程序?

  5. 5

    Visual Basic循环而不冻结程序?

  6. 6

    在长时间运行的过程中停止冻结GUI

  7. 7

    WinForm应用程序停止运行并冻结Windows

  8. 8

    在执行繁重的for循环时停止冻结应用程序

  9. 9

    安装程序随机冻结,鼠标停止移动,ubuntu 无法安装

  10. 10

    Worker / Child实例中的函数不返回,冻结程序

  11. 11

    延迟事件处理程序而不冻结UI线程

  12. 12

    C#WinForm应用程序UI长时间冻结

  13. 13

    Qt测量冻结应用程序的渲染时间

  14. 14

    C#WinForm应用程序UI长时间冻结

  15. 15

    fetchmail不遵守守护程序时间

  16. 16

    应用程序在iPhone 5c的主线程上冻结,但在iPhone 6s上不冻结

  17. 17

    Cx_Freezing PySide,praw,要求应用程序冻结后停止工作

  18. 18

    多次打印(cout)后,C ++程序停止(冻结,无错误,无退出)

  19. 19

    给予mouse / keyboard / terminal / ctrl-c优先权,并停止冻结我的linux系统的程序

  20. 20

    如何停止冻结并锁定任务管理器的应用程序?

  21. 21

    在不冻结应用程序的情况下更新 UI 线程

  22. 22

    在不冻结程序的情况下在后台执行某些操作

  23. 23

    应用程序冻结,但CPU使用率随时间增加

  24. 24

    一段时间后Arduino滚动文本程序冻结

  25. 25

    当不启动apache ignite时如何停止应用程序?

  26. 26

    一定时间后如何停止Python程序

  27. 27

    一定时间后停止程序(包含递归函数)

  28. 28

    应用程序冻结?

  29. 29

    循环制作程序冻结

热门标签

归档