【问题标题】:Football pygame, need help on timer [closed]足球pygame,需要计时器帮助[关闭]
【发布时间】:2020-09-04 22:58:28
【问题描述】:

我想制作一款足球游戏,并且我希望玩家只有 10 秒的时间到达终点,否则游戏结束。

我该怎么做?

【问题讨论】:

  • 欢迎来到stackoverflow。你能发布你做了什么吗?以及我们如何帮助您取得成功?

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


【解决方案1】:

我建议使用 pygame.time.set_timer() 和 pygames 事件机制,因为您的游戏中可能已经有了事件处理循环。请参阅 set_timer 文档here

你做这样的事情:

pygame.time.set_timer(pygame.USEREVENT, 10000)

启动一个 10 秒的计时器,它会在它关闭时触发 pygame.USEREVENT。您可以通过添加如下测试在事件循环中观察该事件:

if event.type == pygame.USEREVENT:
    # Countdown expired

我怀疑您是否需要它,但如果您需要多个计时器并且需要能够将它们区分开来,您可以创建一个带有属性的事件,您可以将其设置为不同的值来跟踪它们。像这样的:

my_event = pygame.event.Event(pygame.USEREVENT, {"tracker": "gameover"})
pygame.time.set_timer(my_event , 2000)

【讨论】:

  • 是的,这是一个很好的方法。
【解决方案2】:

可以使用时间模块(单击here 获取文档)。 这是一个程序,它会打印“我是你在 pygame 中所做的任何事情的替代品!”直到开始后 5 秒

import time
start = time.time()
seconds = 5
while not time.time() >= start + seconds:
    print("I'm a replacement for whatever you do in pygame!")
print(str(seconds)," seconds is up!")

【讨论】:

    【解决方案3】:

    functionpygame.time.get_ticks() 获取开始时间。这会以毫秒为单位为您提供当前时间(自 pygame 开始以来)。将其存储在某个地方。

    MAX_EVADE_TIME    = 10000   # milliseconds
    player_start_time = pygame.time.get_ticks()
    

    然后在主循环中,不断查看时间,判断是否超过了限制。

    while not exiting:
    
        ...
    
        time_now = pygame.time.get_ticks()
    
        # is the time limit used-up?
        if ( time_now > player_start_time + MAX_EVADE_TIME ):
            doGameOver()  # or whtever
    

    【讨论】:

      猜你喜欢
      • 2015-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-11
      • 2011-09-15
      • 2021-11-12
      • 2014-09-22
      • 2014-08-31
      相关资源
      最近更新 更多