[英]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.