Pygame 字体和文本

编程入门 行业动态 更新时间:2024-10-09 17:25:27

Pygame 字体和<a href=https://www.elefans.com/category/jswz/34/1771357.html style=文本"/>

Pygame 字体和文本

Pygame 字体和文本

字体在游戏中也扮演着生要的角色。比如显示得分,角色之间的对话等等。
Pygame中字体使用".ttf"文件,它代表 True Type File。

字体和文本

在pygame中使用字体一般有两种不同的方式。

  1. pygame.font.Font()
  2. pygame.font.SysFont()。
    它们两者之间的区别在于,pygame.font.Font()需要将字体的文件路径传递到它的参数中,而pygame.font.SysFont()只需要字体的名称。

Pygame.font.Font()

pygame.font.Font() 主要用来使用系统之外的字体文件。例如,如果您在与 python 文件相同的目录中有一个xx.ttf的文件,则可以使用如下代码使用。

pygame.font.Font("xx.ttf", 20)

第一个参数是文件路径,第二个是字体大小。

这样做的明显好处是您选择的字体不可能不可用。

您可以做的另一件事就是让您的程序从一开始就使用系统默认字体。此方法 100% 无错误,并且不容易出现任何“丢失字体”问题。

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

请记住,系统默认字体因系统而异。

可能会出现找不到您指定的字体类型或发生某些错误的情况。在这种情况下,pygame 将回退到默认系统字体。

Pygame.font.SysFont()

如果你没有包含任何ttf文件,那么可以使用pygame.font.SysFont()。

一个好的策略是首先找到执行代码的系统支持的字体。pygame.font.get_fonts() 函数将返回它可以在您的系统上找到的所有字体名称的列表。我们在 Windows 桌面上运行代码,收到以下输出。

['arial', 'arialblack', 'bahnschrift', 
'calibri', 'cambriacambriamath', 'cambria', 
......
]

不同的系统会有不同的输出结果。接下一来可以简单地选择一个,并将其传递给SysFont()函数。

使用系统字体

chat_font = pygame.font.SysFont('arial', 15)
name_font = pygame.font.SysFont('Helvetica', 20)
game_over_font = pygame.font.SysFont('Verdana', 60)

SysFont()函数只需要字体的名称,不需要文件路径。第二个参数保持不变,表示字体大小。

如您所见,我们已经创建了几种类型的字体。原因是在普通游戏中,文本的不同部分会使用许多不同类型的字体。在整个游戏中使用相同类型的字体系列和大小是非常不寻常的。

例如,我们使用相当小的字体大小为对话创建了一种字体类型。对于许多游戏都有的“GAME OVER”文本,我们使用了更大的字体。我们甚至为names创建了一种不同的字体,其字体大小比文本稍大(以使其突出一点)。

chat = chat_font.render("Hey there, Beautiful weather today!",True, (0,0,0))
name = name_font.render("John Hubbard", True, (0,0,255))
game_over = game_over_font.render("Game Over", True, (255,0,0))

定义字体只是第一步。接下来,要用字体创建一个Surface对象。您还可以在渲染时决定颜色。True参数代表anti-aliasing,用于使边缘更平滑。如果要使用它,请传递True ,否则传递False。

screen.blit(dialogue, (40,40))
screen.blit(name, (40,140))
screen.blit(game_over, (40,240))

最后一步是在屏幕上实际显示对象。为此,我们使用surface.blit()函数。

Pygame 字体示例

现在我们实际上将上面显示的所有代码放在一个综合程序中并向您展示输出。

我们程序的代码。

import pygamepygame.init()
#定义颜色
CHAT_COLOR = (0,0,0)
NAME_COLOR = (0,0,255)
GAME_OVER_COLOR = (255,0,0)screen = pygame.display.set_mode((400, 400))
clock = pygame.time.Clock()chat_font = pygame.font.SysFont('arial', 15)
name_font = pygame.font.SysFont('Helvetica', 20)
game_over_font = pygame.font.SysFont('Verdana', 60)chat = dialogue_font.render("Hello,nict to meet you!",True, CHAT_COLOR)
name = name_font.render("ubuntu", True,NAME_COLOR )
game_over = game_over_font.render("Game Over", True, GAME_OVER_COLOR)while True:for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()sys.exit()screen.fill((255, 255, 255))screen.blit(dialogue, (40,40))screen.blit(name, (40,140))screen.blit(game_over, (40,240))pygame.display.flip()clock.tick(60)

更多推荐

Pygame 字体和文本

本文发布于:2024-03-12 23:55:47,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1732718.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:文本   字体   Pygame

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!