我正在为一个学校项目制作一个游戏,并且在我的生活中,不能弄清楚如何将游戏中的计时器放在右上角。我希望它长达六十秒。我根本找不到任何语法。请帮忙吗?
答案 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的任意倍数即可。