pygame

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 中用于处理文本渲染的部分。它允许你从系统字体或自定义字体文件创建字体对象,并使用这些对象来渲染文本为图像,以便在游戏中显示。

这个能干嘛就不用我多说了吧。

基础用法
  1. pygame.font.Font(fontfile, size)
    • 功能: 创建一个 Font 对象,可以从文件或系统字体加载。
    • 参数:
      • fontfile (str): 字体文件的路径。如果设置为 None,则使用默认的系统字体。
      • size (int): 字体的大小。
    • 返回值: Font 对象。
  2. 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()

在这里插入图片描述

  1. 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--

a4e2dd9c2.png)

这里我们就使用了新的系统字体Arial,设置了字体大小32,并且加粗倾斜。

  1. pygame.font.get_fonts()
    • 功能: 返回系统中所有可用字体的名称列表。
    • 参数: 无
    • 返回值: 字符串列表,包含系统字体名称

瞌睡来了就有枕头,我不知道系统有哪些字体怎么办? 用这个函数。

fonts = pygame.font.get_fonts()
for font in pygame.font.get_fonts():
    print(font)

print(len(fonts))

在这里插入图片描述
一共89种,有兴趣的可以自己试试。

  1. 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}')

在这里插入图片描述

  1. 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()

在这里插入图片描述

这样一来,字体就可以在窗口中随意的设定位置了。

上一篇:ArcGIS Pro SDK (八)地理数据库 3 数据


下一篇:【深度学习】Transformer