【问题标题】:Loading previously elapsed time with Pygame and Pickle使用 Pygame 和 Pickle 加载之前经过的时间
【发布时间】:2014-09-06 05:58:20
【问题描述】:

我正在制作一款非常依赖于经过时间的游戏。我当前的实现基于 pygame.time.get_ticks() 并且非常简单易行;这是一个小例子:

if event.type == DISPTIMER:
        time = int(pygame.time.get_ticks()/1000)
        timeObj = buttonFont.render(str(time) + ' seconds since start', False, black)
        windowSurfaceObj.blit(timeObj, (450, 50))

但是,我不确定如何腌制这个。我已经搜索了所有 pygame 文档,但找不到任何写入 pygame 时间模块的方法。 我可以使用时钟,但我找不到任何方法来读取时钟的值而不重置它,这使得它不适合我的目的。

有没有办法做到这一点而无需笨拙的变通办法?

【问题讨论】:

  • 你不能在 PyGame 中覆盖时间。
  • 您可能需要腌制保存的时间并将其添加到get_ticks() 返回的时间中,尽管这可能属于“笨拙的解决方法”类别。
  • 是的,我想。我想我正在寻找的是除了 pygame 的时间之外我还可以使用什么的任何输入,这将非常适合 pygame 的时间适合但可以腌制和加载的任务。编辑:达诺,这似乎是一个可能的候选人。我可能只需要一个额外的行和变量就可以做到这一点。
  • 你想通过这个来完成什么?你能详细说明一下吗?
  • 当然。这是一款休闲游戏。经过时间的主要目的是作为用户反馈;我想向玩家报告他们玩了多久。从可用性的角度来看,这是一个有用的指标,从竞争的角度来看,它也是相关的。此外,某些事情会在经过几秒钟后在游戏中发生,并且在游戏加载时恢复经过的时间可以防止通过保存和加载来改变游戏结果和行为。这也可以通过单独的代码来完成,但在很多事情都是定时的游戏中,这很笨拙。

标签: python python-3.x time pygame pickle


【解决方案1】:

好吧,我想我知道你想做什么了。

如果我没记错的话,您希望能够加载和保存自游戏开始以来的刻度。为此,您可以使用pygame.time.Clock 和一个额外的变量来存储passed_ticks

这是一个例子:

passed_ticks = 0
clock = pygame.time.Clock()

# somewhere in your main loop
passed_ticks += clock.tick()

# printing becomes
if event.type == DISPTIMER:
    time = int(passed_ticks/1000)
    timeObj = buttonFont.render(str(time) + ' seconds since start', False, black)
    windowSurfaceObj.blit(timeObj, (450, 50))

您现在可以随时保存和加载您的 passed_ticks 变量。

【讨论】:

  • 我最终做了一些更像 dano 建议的事情:time = int((pygame.time.get_ticks()+savedTime)/1000)。不过谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-06
  • 2012-03-28
  • 2018-10-18
  • 2016-11-11
  • 1970-01-01
  • 2021-08-16
  • 1970-01-01
相关资源
最近更新 更多