《Python和Pygame游戏开发指南》——2.15 pygame.PixelArray对象

简介:

本节书摘来自异步社区《Python和Pygame游戏开发指南》一书中的第2章,第2.15节,作者[美]Al Sweigart(斯维加特), 李强 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.15 pygame.PixelArray对象

遗憾的是没有单个的函数可以调用来设置一个单个像素的颜色(除非你使用相同的起点和终点来调用pygame.draw.line())1。在向一个Surface对象绘制之前和之后,Pygame框架需要在幕后运行一些代码。如果它必须针对想要设置的每一个像素来做这些事情,程序将会运行得慢很多(根据我的快速测试,用这种方式绘制像素,所需时间会是原来的两到三倍)。

相反,应该创建一个Surface对象的pygame.PixelArray对象(我们后面将其简称为PixelArray对象)。创建一个Surface对象的PixelArray对象,将会“锁定”该Surface对象。而当一个Surface对象锁定的时候,仍然能够在其上调用绘制函数,但是,不能够使用blit()方法在其上绘制诸如PNG或JPG这样的图像(本章稍后将会介绍blit()方法)。

如果想要查看一个Surface对象是否锁定了,使用get_locked()方法,如果它锁定了,Surface的get_locked()方法将会返回True,否则的话,返回False。

由pygame.PixelArray()返回的PixelArray对象,可以通过两个索引来访问,从而设置单个的像素。例如,第28行的pixObj480 = BLACK将会把X 坐标为480、Y 坐标为380的点设置为黑色(别忘了,BLACK变量存储的颜色元组是(0, 0, 0))。

要告诉Pygame已经完成了单个像素的绘制,用一条del语句删除掉PixelArray对象,这就是第33行所做的事情。删除PixelArray对象,将会“解锁”Surface对象,以便你可以再次在其上绘制图像。如果忘记了删除PixelArray对象,下一次尝试将一幅图像复制,即绘制到Surface上的时候,程序会导致一条如下所示的错误“pygame.error: Surfaces must not be locked during blit”。

相关文章
|
1月前
|
存储 数据处理 Python
Python如何显示对象的某个属性的所有值
本文介绍了如何在Python中使用`getattr`和`hasattr`函数来访问和检查对象的属性。通过这些工具,可以轻松遍历对象列表并提取特定属性的所有值,适用于数据处理和分析任务。示例包括获取对象列表中所有书籍的作者和检查动物对象的名称属性。
33 2
|
1月前
|
缓存 监控 算法
Python内存管理:掌握对象的生命周期与垃圾回收机制####
本文深入探讨了Python中的内存管理机制,特别是对象的生命周期和垃圾回收过程。通过理解引用计数、标记-清除及分代收集等核心概念,帮助开发者优化程序性能,避免内存泄漏。 ####
56 3
|
2月前
|
JSON 开发工具 git
基于Python和pygame的植物大战僵尸游戏设计源码
本项目是基于Python和pygame开发的植物大战僵尸游戏,包含125个文件,如PNG图像、Python源码等,提供丰富的游戏开发学习素材。游戏设计源码可从提供的链接下载。关键词:Python游戏开发、pygame、植物大战僵尸、源码分享。
|
3月前
|
存储 缓存 Java
深度解密 Python 虚拟机的执行环境:栈帧对象
深度解密 Python 虚拟机的执行环境:栈帧对象
82 13
|
3月前
|
索引 Python
Python 对象的行为是怎么区分的?
Python 对象的行为是怎么区分的?
37 3
|
3月前
|
Python
深入解析 Python 中的对象创建与初始化:__new__ 与 __init__ 方法
深入解析 Python 中的对象创建与初始化:__new__ 与 __init__ 方法
34 1
|
3月前
|
缓存 Java 程序员
一个 Python 对象会在何时被销毁?
一个 Python 对象会在何时被销毁?
64 2
|
3月前
|
API Python 容器
再探泛型 API,感受 Python 对象的设计哲学
再探泛型 API,感受 Python 对象的设计哲学
29 2
|
3月前
|
API Python
当调用一个 Python 对象时,背后都经历了哪些过程?
当调用一个 Python 对象时,背后都经历了哪些过程?
34 2
|
3月前
|
数据采集 前端开发 Python
Python pygame 实现游戏 彩色 五子棋 详细注释 附源码 单机版
Python pygame 实现游戏 彩色 五子棋 详细注释 附源码 单机版
107 0