在pygam游戏中添加秒表

2024-09-25 08:37:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在我的游戏里加一个秒表。我计划修改此代码并在我的pygame中添加:

Sec += 1
print(str(Min) + " Mins " + str(Sec) + " Sec ")
if Sec == 60:
    Sec = 0
    Min += 1
    print(str(Min) + " Minute")

我是否应该在definit部件中添加一个计时器框,并为计时器代码创建一个新的def?我想让计时器不使用代码滴答,因为我的游戏正在运行时钟滴答声(60)所以它不影响勾选

更新 下面是我的游戏代码:

^{pr2}$

Tags: 代码游戏if部件secminpygame计划
2条回答

例如,您可以使用pygame.time.get_ticks()来获取自调用pygame.init()以来的毫秒数,然后使用简单除法从该数字中获得秒和分钟等。在

下面是一个简单的例子:

import pygame
import pygame.freetype

def main():
    pygame.init()
    screen=pygame.display.set_mode((400, 300))
    clock=pygame.time.Clock()
    font=pygame.freetype.SysFont(None, 34)
    font.origin=True
    while True:
        for e in pygame.event.get():
            if e.type == pygame.QUIT: return
        screen.fill(pygame.Color('grey12'))
        ticks=pygame.time.get_ticks()
        millis=ticks%1000
        seconds=int(ticks/1000 % 60)
        minutes=int(ticks/60000 % 24)
        out='{minutes:02d}:{seconds:02d}:{millis}'.format(minutes=minutes, millis=millis, seconds=seconds)
        font.render_to(screen, (100, 100), out, pygame.Color('dodgerblue'))
        pygame.display.flip()
        clock.tick(60)

if __name__ == '__main__': main()

enter image description here

如果你想让你的秒表“稍后开始”,你可以在此时存储pygame.time.get_ticks()的输出,并简单地从进一步调用的结果中减去它(类似于starttime=pygame.time.get_ticks()和{}的内容,你将得到这个想法)。在

如果你的游戏在while循环上运行,fps为60,你可以通过这样做获得分钟和秒:

frame_count = 0
frame_rate = 60

... while block of game running 60 fps

    # Every second passes 60 frames, so you get seconds by dividing
    # by 60
    seconds = total_seconds // 60

    # Because 1 second is 60 frames, minute is 60 seconds * 60 frames.
    # So you divide by 60 * 60 = 3600 
    minutes = total_seconds // 3600  # Because every second is 60 fps 

    output_string = "Time: {0:02}:{1:02}".format(minutes, seconds)

    frame_count += 1

我找到了这个解决方案here

相关问题 更多 >