我在Pygame字体上收到一个表面错误。我怎么修理?

2022-12-01 03:40:08 发布

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

我正在使用PyGame1.9.6和Python3.7.4。我正在为太空入侵者制作一个标题屏幕。但当我运行调用运行字体的函数的代码时,它会显示:

screen.blit(cover_font, (150, 250))
TypeError: argument 1 must be pygame.Surface, not pygame.font.Font

因此,我在另外三个场合显示了文本,代码中没有问题

以下是其他三种字体显示:

# Score
score_value = 0
font = pygame.font.Font('freesansbold.ttf', 32)

# Game Over Text
over_font = pygame.font.Font('freesansbold.ttf', 64)

# Paused
paused_font = pygame.font.Font('freesansbold.ttf', 64)


def game_paused():
    paused_text = paused_font.render("Paused", True, (255, 255, 255))
    screen.blit(paused_text, (275, 250))


def show_score(x, y):
    score = font.render("Score: " + str(score_value), True, (255, 255, 255))
    screen.blit(score, (x, y))


def game_over_text():
    over_text = over_font.render("GAME OVER", True, (255, 255, 255))
    screen.blit(over_text, (200, 250))

但出于某种原因,它会弹出此代码的错误:

# Cover Text
cover_font = pygame.font.Font('freesansbold.ttf', 64)
def cover_text():
    cover = cover_font.render("SPACE INVADERS", True, (0, 0, 0))
    screen.blit(cover_font, (150, 250))

所以我根本不知道问题是什么。代码在所有级别上基本相同。我只是在游戏中的不同时间调用字体。所以我一如既往地感谢你的建议。多谢各位


1条回答
网友
1楼 · 发布于 2022-12-01 03:40:08

您无意中尝试对字体对象而不是曲面对象执行了blit操作。字体的名称为cover_font,而表面的名称为cover

screen.blit(cover_font, (150, 250))

screen.blit(cover, (150, 250))