📅  最后修改于: 2023-12-03 14:45:43.658000             🧑  作者: Mango
PyGame 是一个 Python 实现的 2D 游戏开发框架,可以在 Windows、MacOS 和 Linux 平台上运行。它使用了 SDL 图形库来实现游戏的交互和图形渲染,具有易于学习、轻量级和丰富的文档资源等特点,已被广泛应用于游戏开发、计算机图形学等领域。
在使用 PyGame 开发游戏之前,需要先安装 PyGame 包。PyGame 依赖于 NumPy 和 SDL 库,我们可以使用 pip 命令直接安装:
pip install pygame
如果出现安装错误,可以参考 PyGame 文档中的安装指南。
下面我们来看一个简单的 PyGame 程序:
import pygame
pygame.init()
width = 640
height = 480
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("PyGame Demo")
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((255, 255, 255))
pygame.draw.circle(screen, (255, 0, 0), (320, 240), 50)
pygame.display.flip()
pygame.quit()
这个程序会创建一个窗口,然后在窗口中绘制一个红色的圆形。我们来逐行解释一下:
import pygame
导入 PyGame 模块。pygame.init()
初始化 PyGame。width = 640
和 height = 480
定义窗口的大小。screen = pygame.display.set_mode((width, height))
创建窗口对象。pygame.display.set_caption("PyGame Demo")
设置窗口标题。running = True
定义一个变量,用来表示程序是否继续运行。while running:
进入主循环,直到用户关闭窗口为止。for event in pygame.event.get():
处理事件队列中的事件,例如键盘输入、鼠标点击等。if event.type == pygame.QUIT:
判断用户是否关闭了窗口。screen.fill((255, 255, 255))
用白色清空窗口。pygame.draw.circle(screen, (255, 0, 0), (320, 240), 50)
绘制一个半径为 50 的红色圆形。pygame.display.flip()
更新窗口显示。pygame.quit()
关闭 PyGame。PyGame 提供了多种图形绘制函数,例如绘制线条、矩形、圆形等。这些函数通常会接受一个 Surface 对象作为参数,表示绘制要显示的目标窗口。
例如,我们可以使用 pygame.draw.line()
函数来绘制一条线:
import pygame
pygame.init()
width = 640
height = 480
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("PyGame Demo")
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((255, 255, 255))
pygame.draw.line(screen, (255, 0, 0), (0, 0), (width, height))
pygame.display.flip()
pygame.quit()
这个程序会绘制一条从窗口左上角到右下角的红色线段。
除了 pygame.draw.line()
函数外,还有许多其他图形绘制函数可供使用,例如:
pygame.draw.rect()
绘制矩形。pygame.draw.circle()
绘制圆形。pygame.draw.ellipse()
绘制椭圆。pygame.draw.polygon()
绘制多边形。PyGame 可以捕捉键盘事件,例如按键和释放按键。可以使用 pygame.event.get()
函数从事件队列中获取事件,并使用事件的类型和属性来处理事件数据。
例如,我们可以编写一个程序,当用户按下空格键时,在窗口中心显示一个文本框:
import pygame
import pygame.freetype
pygame.init()
width = 640
height = 480
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("PyGame Demo")
font = pygame.freetype.SysFont('Arial', 24)
text = font.render('Hello, PyGame!', (0, 0, 0))[0]
text_rect = text.get_rect(center=(width//2, height//2))
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
screen.blit(text, text_rect)
pygame.display.flip()
pygame.quit()
这个程序会在窗口中心绘制一段文本,当用户按下空格键时,绘制的文本会出现在窗口中。pygame.freetype
模块提供了更高级的文本渲染函数,可以自定义字体、字号、颜色等属性。
PyGame 还提供了音频播放和录音的支持。可以使用 pygame.mixer
模块来播放或录制音频文件。
例如,我们可以编写一个简单的音乐播放器,当用户按下空格键时,播放一首音乐:
import pygame
pygame.init()
width = 640
height = 480
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("PyGame Demo")
pygame.mixer.music.load('audio.mp3')
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
pygame.mixer.music.play()
pygame.display.flip()
pygame.quit()
这个程序会在打开窗口时加载音乐文件,并在用户按下空格键时播放音乐。pygame.mixer
模块还提供了其他音频处理函数,例如设置音量、暂停和恢复播放等。