pygame的游戏内计时器

时间:2013-12-13 19:19:35

标签: pygame

我正在为一个学校项目制作一个游戏,并且在我的生活中,不能弄清楚如何将游戏中的计时器放在右上角。我希望它长达六十秒。我根本找不到任何语法。请帮忙吗?

4 个答案:

答案 0 :(得分:1)

在你开始的时候(我假设你正在使用一个pygame)这样做

start = get_ticks()

然后在你的结束时(在绘图命令之前)执行此操作

end = get_ticks() -start
if (end > 1000 /30)
    wait(end)

这样你的游戏将以30 /秒的速度运行,这意味着你的游戏每秒会运行30次,你可以从那里制作一个计时器

如果您需要额外帮助,只需在执行此操作时使用变量:

value += 1

然后让计时器执行此操作:

print(value /30)

如果你迷路了,请告诉我!

答案 1 :(得分:0)

您可以转到此链接Beginning Game Programming for Teens with Python,查看整个代码的工作原理。

在该代码中,您将找到类似的部分:

# 6.4 - Draw clock
font = pygame.font.Font("JUICE___.TTF", 44)
survivedtext = font.render(str((90000-pygame.time.get_ticks())/60000)+":"+str((90000-pygame.time.get_ticks())/1000%60).zfill(2), True, WHITE)
textRect = survivedtext.get_rect()
textRect.topright=[635,5]
screen.blit(survivedtext, textRect)

您正在寻找的是工作方式,因此您必须研究代码并自己解决:P

答案 2 :(得分:0)

我必须为我的一个项目做同样的事情。在开始主循环之前,定义用户已离开的字体,时钟和设置时间

font = pygame.font.SysFont("Terminal", 20)
clock = pygame.time.Clock()
time_left = 60.0

现在在你的主循环中你想调用clock.tick方法并用它来减去时钟剩余的时间

while True:
    time_passed = clock.tick()
    time_passed_seconds = time_passed/1000. #This is so we can set time_left to seconds and not have to use milliseconds
    time_left-=time_passed_seconds

然后,当你到达绘制所有内容的地方时,你可以把它放在这个

time_left_rendered = font.render("Time left = {:02}:{:02}".format(int(time_left)/60, int(time_left)%60), False, (255,255,255))
screen.blit(time_left_rendered, (0,0)) #or wherever you want it

答案 3 :(得分:0)

为了记录,并再次给每个遇到此问题的人:

jenko_cp描述它的方式只是缺少关键的int()方法:

font = pygame.font.Font("JUICE___.TTF", 44)
survivedtext = font.render(str(int((90000-pygame.time.get_ticks())/60000))+":"+str(int((90000-pygame.time.get_ticks())/1000%60)).zfill(2) ,1, black)
textRect = survivedtext.get_rect()
textRect.topright=[635,5]
screen.blit(survivedtext, textRect)

这种方式实际上很流畅。该代码从1:30开始倒计时(此后将永远重复几分钟)。如果需要更多时间,只需将90000更改为60000的任意倍数即可。