pygame 如何在屏幕顶部显示分数?
How do I display a score at the top of my screen in pygame?
我试图在屏幕顶部显示平台游戏的分数,但每次 运行 我都会收到此错误:
“文本必须是 Unicode 或字节”
我已经在网站上看过了,代码看起来和我写的一模一样,但我仍然遇到同样的错误。到目前为止,这是我的代码:
def __init__(self):
#this has all the things needed to initialise the game but the only relevant one to my problem is this line
self.font_name = pygame.font.match_font(FONT_NAME)
def draw(self):
self.screen.fill(BLACK)
self.all_sprites.draw(self.screen)
self.draw_text(self.score, 22, WHITE, WIDTH / 2, 15)
pygame.display.flip()
def draw_text(self, text, size, colour, x, y):
font = pygame.font.Font(self.font_name, size)
text_surface = font.render(text, True, colour)
text_rect = text_surface.get_rect()
text_rect.midtop = (x, y)
self.screen.blit(text_surface, text_rect)
所有大写的东西都在我叫settings的另一个文件中赋值,然后导入到这个文件中。
问题似乎与 text_surface 行有关,但我不知道问题出在哪里。
render
的第一个参数必须是字符串,您似乎试图传递一个数字。
来自docs:
The text can only be a single line: newline characters are not rendered. Null characters ('x00') raise a TypeError. Both Unicode and char (byte) strings are accepted.
首先使用 str
函数将您的值转换为字符串:
font.render(str(text), True, colour)
我试图在屏幕顶部显示平台游戏的分数,但每次 运行 我都会收到此错误: “文本必须是 Unicode 或字节” 我已经在网站上看过了,代码看起来和我写的一模一样,但我仍然遇到同样的错误。到目前为止,这是我的代码:
def __init__(self):
#this has all the things needed to initialise the game but the only relevant one to my problem is this line
self.font_name = pygame.font.match_font(FONT_NAME)
def draw(self):
self.screen.fill(BLACK)
self.all_sprites.draw(self.screen)
self.draw_text(self.score, 22, WHITE, WIDTH / 2, 15)
pygame.display.flip()
def draw_text(self, text, size, colour, x, y):
font = pygame.font.Font(self.font_name, size)
text_surface = font.render(text, True, colour)
text_rect = text_surface.get_rect()
text_rect.midtop = (x, y)
self.screen.blit(text_surface, text_rect)
所有大写的东西都在我叫settings的另一个文件中赋值,然后导入到这个文件中。
问题似乎与 text_surface 行有关,但我不知道问题出在哪里。
render
的第一个参数必须是字符串,您似乎试图传递一个数字。
来自docs:
The text can only be a single line: newline characters are not rendered. Null characters ('x00') raise a TypeError. Both Unicode and char (byte) strings are accepted.
首先使用 str
函数将您的值转换为字符串:
font.render(str(text), True, colour)