📜  pygame 渲染文本 - Python (1)

📅  最后修改于: 2023-12-03 15:03:54.883000             🧑  作者: Mango

Pygame 渲染文本 - Python

在游戏中经常需要显示文本信息,例如得分、时间等等。而 pygame 提供了方便的文本渲染功能,可以轻松地显示需要的文本信息。

渲染文本

使用 pygame 中的 font.Font 类创建字体对象,并使用 render 方法将文本渲染到屏幕上。

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))

font = pygame.font.Font(None, 36)
text = font.render("Hello, World!", True, (255, 255, 255))

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

    screen.fill((0, 0, 0))
    screen.blit(text, (100, 100))
    pygame.display.update()

上面的代码中,我们首先初始化 pygame 并创建窗口。然后,使用 font.Font 创建字体对象,其中第一个参数为字体文件的路径,如果为 None 则使用系统默认字体。第二个参数为字体大小。接着使用 font.render 渲染文本,第一个参数为要渲染的文本,第二个参数为是否使用抗锯齿,第三个参数为文本颜色。

在主循环中,我们首先清空屏幕,然后将渲染后的文本使用 screen.blit 方法绘制到屏幕上,最后使用 pygame.display.update 更新屏幕。

自定义字体

如果需要使用自定义字体,可以将字体文件放在程序所在目录中,或者指定字体文件的绝对路径。

font = pygame.font.Font("myfont.ttf", 36)
字体样式

可以使用 SWS_BOLDSWS_ITALICSWS_UNDERLINE 三个常量设置加粗、斜体、下划线样式。

font = pygame.font.Font(None, 36)
text = font.render("Hello, World!", True, (255, 255, 255), pygame.SWS_BOLD)
自动换行

如果要渲染的文本长度超过一行,可以调用 render 方法的另一个版本,并指定最大宽度和自动换行。

font = pygame.font.Font(None, 36)
text = font.render("Hello, World! This is a long text that will wrap.", True, (255, 255, 255), None, 200, True)

上面的代码中,第六个参数指定了最大宽度,第七个参数为是否自动换行。

结语

本文介绍了 pygame 的文本渲染功能,包括渲染文本、自定义字体、字体样式和自动换行等。通过应用这些技巧,可以方便地显示游戏中的文本信息,提升游戏体验。