pygame简介
Pygame是一个用于开发2D游戏的Python库,基于SDL(Simple DirectMedia Layer)库构建。它提供了图像渲染、音频播放、事件处理等功能,适合快速开发游戏原型或教学用途。
安装与基础配置
通过pip安装:
pip install pygame
初始化Pygame并创建窗口:
import pygame
pygame.init()
screen = pygame.display.set_mode((800, 600)) # 设置窗口大小
pygame.display.set_caption("Pygame示例") # 窗口标题
主游戏循环
游戏的核心是一个持续运行的循环,处理事件、更新状态并渲染画面:
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT: # 检测退出事件
running = False
screen.fill((0, 0, 0)) # 清屏(黑色背景)
pygame.display.flip() # 刷新画面
pygame.quit()
绘制图形与文本
绘制基本形状和文字:
# 绘制矩形(红色,位置(100,100),大小50x50)
pygame.draw.rect(screen, (255, 0, 0), (100, 100, 50, 50))
# 绘制文字
font = pygame.font.Font(None, 36) # 默认字体,大小36
text = font.render("Hello Pygame", True, (255, 255, 255))
screen.blit(text, (200, 200)) # 文字位置
处理用户输入
监听键盘和鼠标事件:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE: # 空格键按下
print("Space pressed")
elif event.type == pygame.MOUSEBUTTONDOWN: # 鼠标点击
print(f"Mouse clicked at {event.pos}")
加载与显示图像
使用pygame.image.load
加载图片并显示:
image = pygame.image.load("player.png") # 图片路径
screen.blit(image, (300, 300)) # 绘制图片到坐标(300,300)
播放音频
播放背景音乐和音效:
pygame.mixer.music.load("background.mp3") # 背景音乐
pygame.mixer.music.play(-1) # 循环播放
sound = pygame.mixer.Sound("jump.wav") # 音效
sound.play() # 播放一次
碰撞检测
检测矩形之间的碰撞:
rect1 = pygame.Rect(100, 100, 50, 50) # 矩形1
rect2 = pygame.Rect(200, 200, 50, 50) # 矩形2
if rect1.colliderect(rect2): # 检测碰撞
print("Collision detected!")
帧率控制
通过pygame.time.Clock
限制帧率:
clock = pygame.time.Clock()
while running:
clock.tick(60) # 限制为60帧/秒
注意事项
- 资源路径需正确,图片/音频文件建议放在项目目录中。
- 事件循环中避免阻塞操作(如长时间计算),否则会导致画面卡顿。
- 使用
pygame.quit()
退出时,可能需手动结束Python进程(某些IDE下)。
进阶功能
- 精灵(Sprite):通过
pygame.sprite.Sprite
类管理游戏对象。 - 动画:逐帧切换图片实现角色动画效果。
- 粒子系统:模拟爆炸、烟雾等动态效果。
Pygame文档详见官方教程。