Python Pygame 实现愤怒的小鸟基础移动示例

半杯拿铁
半杯拿铁
发布时间:2026-10-11| 2人浏览过
原创

本文介绍如何使用 Python 和 Pygame 库开发一个简易的“愤怒的小鸟”游戏原型。通过加载图像、处理键盘事件控制小鸟移动方向,并实现窗口边界碰撞检测与图像翻转功能。代码展示了游戏循环、事件监听及基本的图形渲染逻辑,适合初学者理解 Pygame 基础操作。

Pygame 基础环境搭建

开发基于 Pygame 的游戏首先需要初始化引擎并创建显示窗口。以下代码演示了如何设置游戏窗口尺寸、标题以及加载核心素材。

import pygame,sys

# 初始化 Pygame 引擎
pygame.init()

# 定义窗口尺寸
width, height = 600, 400
screen = pygame.display.set_mode([width, height])

# 设置窗口标题
pygame.display.set_caption("愤怒的小鸟")

# 加载小鸟图片素材
player = pygame.image.load("xiaoniao.png")
rect = player.get_rect()

# 定义初始运动速度 [x_speed, y_speed]
speed = [3, 2]

# 预加载小鸟左右翻转的图像,用于碰撞反弹时的视觉调整
left_head = pygame.transform.flip(player, True, False)
right_head = player

游戏循环与键盘交互控制

游戏的核心在于无限循环中处理用户输入和更新画面。通过监听键盘按键事件,可以改变小鸟的移动速度和方向。同时,需要处理窗口关闭事件以安全退出程序。

# 游戏主循环
while True:
    for event in pygame.event.get():
        # 处理窗口关闭事件
        if event.type == pygame.QUIT:
            exit()
        
        # 处理键盘按下事件
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                player = left_head  # 切换为向左图像
                speed = [-2, 1]     # 设置向左移动速度
            if event.key == pygame.K_RIGHT:
                player = right_head # 切换为向右图像
                speed = [2, 1]      # 设置向右移动速度
            if event.key == pygame.K_UP:
                player = left_head  # 切换为向左图像
                speed = [2, -1]     # 设置向上移动速度
            if event.key == pygame.K_DOWN:
                player = right_head # 切换为向右图像
                speed = [2, 1]      # 设置向下移动速度

边界碰撞检测与图像翻转

当小鸟移动到窗口边缘时,需要检测碰撞并改变运动方向。同时,为了保持视觉一致性,当水平方向发生碰撞时,需要对图像进行水平翻转。

    # 更新小鸟位置
    rect = rect.move(speed)
    
    # 水平边界碰撞检测
    if rect.right > width or rect.left < 0:
        player = pygame.transform.flip(player, True, False)
        speed[0] = -speed[0]  # 反转水平速度
    
    # 垂直边界碰撞检测
    if rect.bottom > height or rect.top < 0:
        speed[1] = -speed[1]  # 反转垂直速度
    
    # 绘制画面
    screen.fill((255, 255, 255))  # 填充白色背景
    screen.blit(player, rect)     # 绘制小鸟
    pygame.display.update()       # 更新显示
    pygame.time.delay(10)         # 控制帧率

代码逻辑解析

该示例代码展示了 Pygame 开发的基本流程。首先,通过 pygame.init() 初始化所有模块。接着,使用 set_mode 创建指定尺寸的窗口。素材加载部分,pygame.image.load 用于读取图片文件,get_rect() 获取图像的矩形区域以便进行位置计算。

在交互控制方面,pygame.event.get() 获取事件队列。通过判断 event.type 为 KEYDOWN 来响应键盘操作。不同的按键对应不同的速度向量 speed,从而控制小鸟的移动方向和速率。同时,根据按键切换对应的图像资源(left_head 或 right_head),实现视觉上的方向变化。

碰撞检测逻辑通过比较矩形边界与窗口尺寸来实现。当 rect.right 超过窗口宽度或 rect.left 小于 0 时,判定为水平碰撞,此时通过 pygame.transform.flip 翻转图像,并将水平速度取反。垂直碰撞同理,仅反转垂直速度。最后,screen.fill 清除上一帧画面,blit 绘制新位置的小鸟,display.update 刷新屏幕,time.delay 控制游戏帧率。

以上就是 Python Pygame 实现愤怒的小鸟基础移动示例的详细内容,更多关于 Python 游戏开发、Pygame 教程及碰撞检测技术的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。