【发布时间】:2020-09-04 22:58:28
【问题描述】:
我想制作一款足球游戏,并且我希望玩家只有 10 秒的时间到达终点,否则游戏结束。
我该怎么做?
【问题讨论】:
-
欢迎来到stackoverflow。你能发布你做了什么吗?以及我们如何帮助您取得成功?
标签: python python-3.x time timer pygame
我想制作一款足球游戏,并且我希望玩家只有 10 秒的时间到达终点,否则游戏结束。
我该怎么做?
【问题讨论】:
标签: python python-3.x time timer pygame
我建议使用 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)
【讨论】:
您可以使用时间模块(单击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!")
【讨论】:
从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
【讨论】: