Pygame是一个开源的Python多媒体开发库,专门用于开发2D游戏。它是Python编程语言的一个扩展,基于 SDL (Simple DirectMedia Layer) 库,提供了丰富的功能来处理图形、声音、事件处理等游戏开发所需的基本要素,使得创建游戏变得更加简单直接。
字体颜色
字体颜色其实是两个模块,但是两个模块的内容都不多,一起记录一下。
pygame.Color
pygame.Color模块在Pygame中用于处理颜色。它提供了颜色对象的创建、操作和转换。color对象基本能在pygame中使用颜色的地方进行使用。
基础用法
import pygame
pygame.init()
screen = pygame.display.set_mode((1200, 800))
pygame.display.set_caption('Draw Shapes')
# 绘制一个填充的红色矩形,直接填写RGB
pygame.draw.rect(screen, (255, 0, 0), (50, 50, 100, 100))
# 定义一个颜色对象,颜色为蓝色
blue = pygame.Color(0, 0, 255)
# 绘制一个未填充的蓝色矩形
pygame.draw.rect(screen, blue, (50, 150, 100, 100), 3)
# 更新屏幕显示
pygame.display.flip()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
ps: 开始和结束的代码都没写备注,相信大家看起来也没有压力。
这是正规的创建一个颜色对象并使用的案例,因为我们创建的颜色对象中是使用RGB的值进行定义的,实际上我们使用CSS标准颜色名称,RGBA值或者十六进制字符串也可以创建一个颜色对象。
其他用法
import pygame
pygame.init()
screen = pygame.display.set_mode((1200, 800))
pygame.display.set_caption('Draw Shapes')
# 绘制一个填充的红色矩形,直接填写颜色通道
pygame.draw.rect(screen, (255, 0, 0), (50, 50, 100, 100))
# 定义一个颜色对象,颜色为蓝色
blue = pygame.Color(0, 0, 255)
pygame.draw.rect(screen, blue, (150, 50, 100, 100), 3)
# 前三位是RGB的值,最后一个255则是透明度取值也是0-255
blue_alpha = pygame.Color(0, 0, 255, 255)
pygame.draw.rect(screen, blue_alpha, (150, 150, 100, 100), 3)
# CSS定义一个颜色对象,颜色为绿色
green = pygame.Color('green')
# 绘制一个未填充的蓝色矩形
pygame.draw.rect(screen, green, (250, 50, 100, 100), 3)
# 十六进制
pink = pygame.Color('#FFC0CB')
pygame.draw.rect(screen, pink, (350, 50, 100, 100), 3)
# 更新屏幕显示
pygame.display.flip()
# 点击关闭退出程序,这个后面再讲,代码可以先写上。
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
从代码和执行结果就能看到,实心红色正方形是不创建color对象绘制的图形。后面开始就是RGB,GRBA绘制(放一起上下对比),使用CSS值绘制和最后的使用十六进制字符串的形式绘制,怎么使用按自己喜好就行。
颜色模块主要就是能灵活的创建一个颜色对象去使用,还有其他一些零碎的函数这里不多讲。用的到时候再学习也不迟,我们还没有开始正式实际写完整的项目,这些背太多我个人觉得不是好事。
pygame.font
pygame.font 模块是 Pygame 中用于处理文本渲染的部分。它允许你从系统字体或自定义字体文件创建字体对象,并使用这些对象来渲染文本为图像,以便在游戏中显示。
这个能干嘛就不用我多说了吧。
基础用法
- pygame.font.Font(fontfile, size)
- 功能: 创建一个 Font 对象,可以从文件或系统字体加载。
- 参数:
- fontfile (str): 字体文件的路径。如果设置为 None,则使用默认的系统字体。
- size (int): 字体的大小。
- 返回值: Font 对象。
- Font.render(text, antialias, color, background=None)
- 功能: 将文本渲染为一个 Surface 对象。
- 参数:
- text (str): 要渲染的文本。
- antialias (bool): 是否使用抗锯齿。
- color (Color 或 tuple): 文本的颜色。
- background (Color 或 tuple): 背景颜色,默认为透明。
- 返回值: Surface 对象,包含了渲染后的文本。
光创建一个字体看不出啥,必须生成一个Surface
对象才能渲染出来,所以两个函数一起使用。使用粉色和默认字体渲染了Hello, Pygame!
这句话,具体请看代码。
import pygame
pygame.init()
# 设置窗口尺寸
screen = pygame.display.set_mode((800, 600))
# 字体颜色
pink = pygame.Color('#FFC0CB')
# 使用默认字体创建一个字体对象
font = pygame.font.Font(None, 32)
text_surface = font.render("Hello, Pygame!", True, pink)
# 填充背景
screen.fill((255, 255, 255))
# 绘制文本
screen.blit(text_surface, (10, 10))
# 更新显示
pygame.display.flip()
# 点击关闭退出程序,这个后面再讲,代码可以先写上。
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
- pygame.font.SysFont(name, size, bold=False, italic=False)
- 功能: 创建一个 Font 对象,从系统字体中加载。
- 参数:
- name (str): 系统字体的名称。
- size (int): 字体的大小。
- bold (bool): 是否使用粗体样式。
- italic (bool): 是否使用斜体样式。
- 返回值: Font 对象。
这个函数比Font()函数好在可以任意使用系统中其他字体,在你没有自定义字体或者不想使用默认字体的时候,就可以使用这个。
--snip--
# 字体颜色
pink = pygame.Color('#FFC0CB')
# 使用Arial字体创建一个字体对象,32号,加粗,倾斜
font = arial_bold = pygame.font.SysFont('Arial', 32, bold=True, italic=True)
text_surface = font.render("Hello, Pygame!", True, pink)
--snip--
这里我们就使用了新的系统字体Arial,设置了字体大小32,并且加粗倾斜。
- pygame.font.get_fonts()
- 功能: 返回系统中所有可用字体的名称列表。
- 参数: 无
- 返回值: 字符串列表,包含系统字体名称
瞌睡来了就有枕头,我不知道系统有哪些字体怎么办? 用这个函数。
fonts = pygame.font.get_fonts()
for font in pygame.font.get_fonts():
print(font)
print(len(fonts))
一共89种,有兴趣的可以自己试试。
- pygame.font.Font.size(text)
- 功能: 返回给定文本在指定字体下的尺寸。
- 参数:
- text (str): 文本字符串。
- 返回值: 一个包含宽度和高度的元组。
# 使用Arial字体创建一个字体对象,32号,加粗,倾斜
font = arial_bold = pygame.font.SysFont('Arial', 32, bold=True, italic=True)
width, height = font.size("Hello, Pygame!")
print(f'Text size: {width}x{height}')
- pygame.font.Font.get_rect(text, width=0, height=0)
- 功能: 返回一个 Rect 对象,用于定位和对齐文本。
- 参数:
- text (str): 文本字符串。
- width (int): 定位区域的宽度。
- height (int): 定位区域的高度。
- 返回值: Rect 对象,可用于定位和对齐文本。
这个函数的作用,就是把你的文字渲染到指定的位置去,不然像例子中,永远在左上角。
import pygame
pygame.init()
# 设置窗口尺寸
screen = pygame.display.set_mode((800, 600))
# 字体颜色
pink = pygame.Color('#FFC0CB')
# 使用Arial字体创建一个字体对象,32号,加粗,倾斜
font = arial_bold = pygame.font.SysFont('Arial', 32, bold=True, italic=True)
# 渲染文本
text_surface = font.render("Hello, Pygame!", True, pink)
# 获取文件的矩形区域
text_rect = text_surface.get_rect()
# 设置文本的顶部居中位置
text_rect.midtop = (screen.get_width() // 2, 10)
# 填充背景
screen.fill((255, 255, 255))
# 绘制文本
screen.blit(text_surface, text_rect)
# 更新显示
pygame.display.flip()
# 点击关闭退出程序,这个后面再讲,代码可以先写上。
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
这样一来,字体就可以在窗口中随意的设定位置了。