Crossin的编程教室

Pygame 简介

有不少小伙伴学习编程的初衷是想开发游戏。

虽然直接用 Python 开发商业游戏的情况并不多见,但通过 Python 开发小游戏,理解游戏的开发原理,熟悉游戏引擎的运作方式,也是很合适的。

今天就给大家介绍一下 Python 开发游戏最知名的框架 Pygame。

如果想看更详细一点的 Pygame 教程,可点击:

Pygame 入门 - 仿微信打飞机游戏

1. Pygame 是什么?

Pygame 是 Python 的一个免费库,专为开发 2D 游戏设计,适合刚学 Python 的新手。它能让你轻松创建贪吃蛇、打砖块等小游戏,主要功能包括:

  • 显示图片和图形,如角色、背景。

  • 处理键盘和鼠标操作。

  • 播放音效和背景音乐。

  • 检测物体碰撞。

Pygame 代码简单直观,在 Windows、Mac、Linux 上都可以运行,非常适合初学者做小游戏或练习编程。

2. 安装 Pygame

确保已安装 Python(建议选择尽量新的版本)。

打开命令行(Windows 用 CMD,Mac 用终端)。

输入命令:

pip install pygame

安装成功会有相应的提示信息。

3. Pygame 快速上手

我们用一个简单的游戏来演示 Pygame 的用法:

一个方块可在屏幕底部左右移动,自动上下弹跳,碰到随机出现的金币就会加分。按空格键暂停/继续,用方向键控制左右移动。

import pygameimport random
# 初始化 Pygamepygame.init()
# 创建窗口screen = pygame.display.set_mode((800, 600))pygame.display.set_caption("弹跳方块吃金币")
# 方块和金币square = pygame.Rect(400, 550, 50, 50)  # 方块位置coin = pygame.Rect(random.randint(0, 750), random.randint(0, 500), 30, 30)  # 金币位置speed_x, speed_y = 5, -10  # 方块初始速度score = 0  # 分数
# 时钟和字体clock = pygame.time.Clock()font = pygame.font.SysFont(None, 36)
# 游戏主循环running = Truewhile running:    # 处理事件    for event in pygame.event.get():        if event.type == pygame.QUIT:            running = False
    # 键盘控制左右移动    keys = pygame.key.get_pressed()    if keys[pygame.K_LEFT] and square.left > 0:        square.x -= speed_x    if keys[pygame.K_RIGHT] and square.right < 800:        square.x += speed_x
    # 方块上下弹跳    square.y += speed_y    if square.top <= 0:        speed_y = 10  # 碰到顶部向下    if square.bottom >= 600:        speed_y = -10  # 碰到底部向上
    # 检测碰撞    if square.colliderect(coin):        score += 1        coin.x, coin.y = random.randint(0, 750), random.randint(0, 500)
    # 绘制画面    screen.fill((255, 255, 255))  # 白色背景    pygame.draw.rect(screen, (255, 0, 0), square)  # 红色方块    pygame.draw.circle(screen, (255, 255, 0), coin.center, 15)  # 黄色金币    score_text = font.render(f"Score: {score}", True, (0, 0, 0))    screen.blit(score_text, (10, 10))  # 显示分数
    pygame.display.flip()    clock.tick(60)  # 60 帧每秒
pygame.quit()

代码说明:

  • 窗口和对象:创建 800x600 窗口,用 pygame.Rect 表示方块和金币。

  • 移动:方向键控制左右,speed_y 实现上下弹跳。

  • 碰撞:用 square.colliderect(coin) 检测吃金币。

  • 画面:用 screen.fill 清屏,pygame.draw 画图形,screen.blit 显示文字。

保存为 game.py,运行后用方向键移动方块,吃金币加分!

Image

4. Pygame 的优缺点

优点:

  • 简单易学,适合 Python 新手。

  • 免费,跨平台运行。

  • 社区活跃,教程和素材丰富。

缺点:

  • 仅限 2D 游戏,功能较简单。

  • 大型游戏性能可能不足。

  • 需手动实现复杂逻辑。

5. 其他 Python 游戏框架及适合场景

以下是基于 Python 的其他游戏开发模块:

  • Pygame Zero:极简化的 Pygame 变种,适合儿童或零基础者。无需手动写事件循环,适合快速开发简单游戏(如迷宫、贪吃蛇)。

  • Arcade:现代 2D 游戏库,性能优于 Pygame,支持更多图形效果,适合稍复杂的 2D 游戏(如平台跳跃游戏)。

  • Kivy:跨平台框架,支持 PC 和移动端(Android/iOS),适合开发触摸屏游戏或交互应用(如手机小游戏)。

  • Panda3D:支持 3D 和 2D 游戏,功能强大但稍复杂,适合需要 3D 效果的项目(如简单 3D 冒险游戏)。

选择建议:

  • 零基础或小游戏:Pygame Zero,代码最少

  • 简单 2D 游戏:Pygame,平衡易用性和功能

  • 复杂 2D 游戏:Arcade,性能更好

  • 移动端游戏:Kivy

  • 3D 游戏:Panda3D

6. 总结

Pygame 是 Python 初学者开发 2D 游戏的绝佳工具,简单、免费、易上手。通过弹跳方块游戏,你可以看到 Pygame 轻松实现图形、输入和碰撞检测。相比其他 Python 游戏框架,Pygame 适合快速开发小型 2D 游戏。如果你也对游戏开发感兴趣,那就快用 Pygame,创造你的第一个游戏吧!

如果本文对你有帮助,欢迎点赞、评论、转发。你们的支持是我更新的动力~


Crossin的新书《码上行动:用ChatGPT学会Python编程》已经上市了。本书以ChatGPT为辅助,系统全面地讲解了如何掌握Python编程,适合Python零基础入门的读者学习。【点此查看详细介绍】
购买后可加入读者交流群,Crossin为你开启陪读模式,解答你在阅读本书时的一切疑问。
Crossin的其他书籍:

添加微信 crossin123 ,加入编程教室共同学习~
Image
感谢转发和点赞的各位~