Python Pygame 图像基础:坐标系、加载与碰撞检测

纸上星河
纸上星河
发布时间:2026-10-15| 5人浏览过
原创

本文详解 Python Pygame 库中图像使用的基础知识,涵盖坐标系设定、图片加载、Rect 对象属性及移动逻辑。通过小球碰撞边框的示例,解析如何利用 get_rect 和 move 方法实现简单的边界反弹效果,帮助开发者快速掌握游戏图形渲染与交互的核心原理。

笛卡尔坐标系

在游戏开发中,坐标系统是定位元素的基础。接下来我们将了解 Pygame 中坐标体系的具体构建方式。

Pygame 的窗口坐标系以左上角为原点 (0,0)。横轴(X轴)正方向向右延伸,纵轴(Y轴)正方向向下延伸。

实际效果

为了演示这一原理,我们实现了一个小球在窗口内运动并碰到边框后反弹的效果。虽然这是经典的碰撞实验,但为了增加趣味性,这里并未使用标准的小球图形。

代码


import pygame,sys

pygame.init()
size = width, height = 600, 400
speed = [1,1]
BLACK = 0, 0, 0
s = pygame.display.set_mode(size)
pygame.display.set_caption("hi 滑稽")

ball = pygame.image.load("img/361.png")
ballrect = ball.get_rect()

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
    ballrect = ballrect.move(speed[0], speed[1])
    if ballrect.left < 0 or ballrect.right > width:
        speed[0] = - speed[0]
    if ballrect.top < 0 or ballrect.bottom > height:
        speed[1] = - speed[1]

    s.fill(BLACK)
    s.blit(ball, ballrect)
    pygame.display.update()

代码说明

碰撞原理

方法说明

方法 说明
pygame.image.load(filename) 将filename路径下的图像载入游戏,支持JPG、PNG、GIF(非动画)等13种常用图片格式
get_rect() 返回一个覆盖图像的矩形Rect对象
move(x,y) 矩形移动一个偏移量(x,y),即在横轴方向移动x像素,纵轴方向移动y像素,xy为整数
fill(color) 显示窗口背景填充为color颜色,采用RGB色彩体系
blit(src, dest) 将一个图像绘制在另一个图像上,即将src绘制到dest位置上。

载入图片


pygame.init()
size = width, height = 600, 400       #设置了宽高,也可以在pygame.display.set_mode()设置
speed = [1,1]              #速度
BLACK = 0, 0, 0            #颜色黑色
s = pygame.display.set_mode(size)
pygame.display.set_caption("hi 滑稽")
ball = pygame.image.load("img/361.png")  #注意图片路径

ballrect = ball.get_rect()

在 Pygame 中处理图像主要涉及两个核心对象:surface 对象和 Rect 对象。Surface 用于存储和操作图像数据,而 Rect 则用于定义图像的位置、大小及进行碰撞检测。

Rect 对象属性

Rect 对象包含多个关键属性,例如 top、bottom、left、right 分别表示矩形的上、下、左、右边界坐标;width 和 height 则分别表示矩形的宽度和高度。

移动


ballrect = ballrect.move(speed[0], speed[1])      #  x1
    if ballrect.left < 0 or ballrect.right > width:    # x2
        speed[0] = - speed[0]
    if ballrect.top < 0 or ballrect.bottom > height:
        speed[1] = - speed[1]

矩形移动主要通过以下两种方式实现:x1 表示调用 move(x,y) 方法,使矩形在横轴方向移动 x 像素,纵轴方向移动 y 像素,其中 x 和 y 为整数;x2 表示处理边界反弹逻辑,当矩形触碰到左右两侧边界时,横向速度取反;当触碰到上下两侧边界时,纵向速度取反。

到此这篇关于浅谈Python Pygame图像的基本使用的文章就介绍到这了,更多相关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 算法库。