繁体   English   中英

如何在 pygame 中显示 FPS 计数器?

[英]How to display an FPS counter in pygame?

我最近开始学习 pygame,我想在屏幕左上角显示一个 FPS 计数器。 我已经这样做了,但是当我开始我的游戏时,FPS 计数器显示 this ,这不是我想要的。 我希望计数器只显示两个数字,在图片中就是 60。 到目前为止,这是我的代码:

class FPSCounter:
    def __init__(self, surface, font, clock, color, pos):
        self.surface = surface
        self.font = font
        self.clock = clock
        self.pos = pos
        self.color = color

        self.fps_text = self.font.render(str(int(self.clock.get_fps())) + "FPS", False, self.color)
        self.fps_text_rect = self.fps_text.get_rect(center=(self.pos[0], self.pos[1]))

    def render(self):
        self.surface.blit(self.fps_text, self.fps_text_rect)

    def update(self):
        self.fps_text = self.font.render(str(self.clock.get_fps()) + "FPS", False, self.color)
        self.fps_text_rect = self.fps_text.get_rect(center=(self.pos[0], self.pos[1]))

这就是我在游戏中显示它的方式:

import pygame, sys
from fps_counter import FPSCounter

pygame.init()
clock = pygame.time.Clock()

black = (0, 0, 0)
green = (0, 0, 255)

width = 640
height = 480

screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("FPS Test")

font = pygame.font.Font(None, 36)

fps_counter = FPSCounter(screen, font, clock, green, (150, 10))

while True:
    screen.fill(black)
    
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_ESCAPE:
                pygame.quit()
                sys.exit()

    fps_counter.render()
    fps_counter.update()

    pygame.display.update()
    clock.tick(60)

先感谢您。 :)

您需要做的就是格式化文本。 请参阅格式字符串语法

class FPSCounter:
    # [...]

    def update(self):
        text = f"{self.clock.get_fps():2.0f} FPS"
        self.fps_text = self.font.render(text, False, self.color)
        self.fps_text_rect = self.fps_text.get_rect(center=(self.pos[0], self.pos[1]))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM