当前位置: 首页 > 知识库问答 >
问题:

如何在Pygame中设置帧速率?[副本]

曹新觉
2023-03-14

因此,在回答我的问题(如何连续移动图像平滑Pyplay?)我被告知设置我的帧率,以便做我的动画。但是不管我把它放在哪里,clock.tick(60)什么都不做。我做时钟=pygame.time.时钟()BTW。那么我该怎么做呢?我已经研究并发现了这一点(pyplayclock.tick()vs在游戏主循环中的帧率),但我并不真正理解这一点。

我的主要游戏功能;

def main_game():
    global var_escape
    global var_start_game
    global var_menu_screen
    global var_camera
    global var_bounce
    global var_x
    global var_x_timer
    global var_door
    global var_light
    global camera_flip
    
    var_start_game = False
    var_escape = False
    var_menu_screen = 0
    var_bounce = 0
    var_x = 0
    var_camera = 1
    var_x_timer = 0
    var_light = 0
    var_door = 0
    var_camera_flip = 0
    
    pygame.mixer.init()
    pygame.mixer.music.load(r'audio\Menu_Music.mp3')
    pygame.mixer.music.play(-1)

    pygame.mixer.music.set_volume(1.0)

    while True:
        if var_menu_screen == 0:
            menu_screen()
        if var_menu_screen == 1:
            options_screen()
        if var_menu_screen == 2:
            new_game_boyz()
        if var_menu_screen == 3:
            pygame.quit()
            sys.quit()
        if var_menu_screen == 4:
            credits_screen()
        if var_start_game == True:
            break
    
    var_start_game = False
    
    start_game()
    image_door_6_off = pygame.image.load(r'textures\door\light off\frame_6_off.png')
    image_door_button_off = pygame.image.load(r'textures\door button\door_button_off.png')
    image_light_button_off = pygame.image.load(r'textures\light button\light_button_off.png')
    image_door_6_off_size = image_door_6_off.get_rect().size
    centered_image_door_6_off = [(display_size[0] - image_door_6_off_size[0])/2, (display_size[1] - image_door_6_off_size[1])/2]
    screen.blit(image_door_6_off, centered_image_door_6_off)
    screen.blit(image_door_button_off, (0, 0))
    screen.blit(image_light_button_off, (1113, 0))
    pygame.display.update()

    while var_escape == False:
#This is my main game loop in the function
#This is where I would like to set the framerate
        mouse_down = False
        for event in pygame.event.get():
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    quit_popup()
            elif event.type == MOUSEBUTTONDOWN:
                mouse_down = True
            
        light(mouse_down)
        door(mouse_down)
        camera_flip()
#Just so I can get a smoother animation for this function below
        cameras() #<--- This function here
#Just so I can get a smoother animation for this function above
        camera_buttons(mouse_down)

这是我的主要游戏循环;

while True:     
#Calls the function 
    main_game()

主游戏循环不会设置帧速率,因为主游戏函数中有一个循环。这只是一个循环,因为当我想重新启动函数时,我可以。我只是添加了这个来展示函数是如何运行的。

共有1个答案

吴镜
2023-03-14

使用pygame。时间时钟控制每秒帧数,从而控制游戏速度。

pygame的tick()方法。时间Clockobject,以这种方式延迟游戏,循环的每次迭代都消耗相同的时间段。请参见pygame。时间时钟勾选()

此方法应每帧调用一次。

例如。:

def main_game():
    # [...]

    FPS = 60
    clock = pygame.time.Clock()
    while var_escape == False:
        clock.tick(60)

        # [...]
 类似资料:
  • 我试图在PyGame中制作一个“跑步者”风格的游戏(比如几何短跑),背景不断移动。到目前为止一切正常,但是背景图像的渲染限制了帧速率超过每秒35帧。在我添加无限/重复背景元素之前,它可以轻松地以60 fps的速度运行。这两行代码是负责的(当删除时,游戏可以以60 fps的速度运行): screen.blit(bg,(bg_x,0))|screen.blit(bg,(bg_x2,0)) 我能做些什么

  • 我一直在看几个帖子(http://tinyurl.com/nqtfh9a...)和PPS的链接(http://www.cardinalpeak.com/blog/the-h-264-sequence-parameter-set/),但不能真正理解这个概念。 我买了一个带有SDK的编码器。在规格中,它给了我SPS和PPS,我想知道这里是否有帧速率信息: 我试着从这些信息中获得SPS,但我无法获得相同

  • 我想修复Android中相机预览的帧率,即20fps或30fps。但是,我们发现帧率不稳定。 在android文档中,据说帧率在getSupport dPreviewFpsRange中定义的最小帧率和最大帧率之间波动。https://developer.android.com/reference/android/hardware/Camera.Parameters.html#getSupporte

  • 问题内容: 我想知道是否有一种方法可以对Caffe中的不同层使用不同的学习率。我正在尝试修改预训练的模型,并将其用于其他任务。我想要的是加快对新添加的层的培训,并使受过培训的层保持较低的学习率,以防止它们变形。例如,我有一个5转换层的预训练模型。现在,我添加一个新的转换层并对其进行微调。前5层的学习率为0.00001,后5层的学习率为0.001。任何想法如何实现这一目标? 问题答案: 使用2个优化

  • 问题内容: 我只是想知道我是否有可能在Pygame中获得显示器的分辨率,然后使用这些尺寸创建一个窗口,以便启动程序来检测显示器的分辨率,然后将窗口自动适合全屏显示。 我目前正在使用该窗口。我知道您可以使用来获得包括显示器分辨率在内的视频信息,但是如何提取这些值,然后在???中使用它们呢? 在此先感谢Ilmiont 问题答案: 您可以使用: 该文件说: current_h,current_w:当前视

  • 问题内容: 我将其发布为相关主题下的评论。但是,它们似乎没有引起注意== 我用过 分成存储为文件的帧。似乎行得通,只是不太行。录制视频时,我的录制速率为,而视频却很长。如果我的数学正确,则整个视频总共应为 149,000帧 。可是我跑的时候 我只获得了4472个文件。如何获得原始的149k帧? 我还尝试通过执行以下操作将原始AVI的帧频转换为1000fps 但这似乎并没有解决我的问题。 问题答案: