不知道方向就先走着,最近又无所事事,准备照着别人的代码写一下 Mario 游戏,参照链接:https://github.com/mx0c/super-mario-python
虽然这位作者有写是受另一个项目启发,但是有些地方比如依赖关系也挺混乱的,但好在项目很完整,是用 pygame 写的,照着写总比自己瞎折腾容易吧。
先找出没有依赖其他文件的代码,可以作为后续其他代码的零件,这里选择 https://github.com/mx0c/super-mario-python/blob/master/classes/Spritesheet.py
文件结构直接按参考项目创建,主要用 cairo.ImageSurface 对象替代 pygame.image 对象,并另外实现 set_colorkey 指定颜色作为透明色。笔记和想法都直接写到注释里了。
# SpriteSheet.py
from cairo import ImageSurface, Context, Rectangle, FORMAT_ARGB32
from mario.classes.Utils import Utils
"""
cairo.ImageSurface 提供了一个灵活和强大的方式来在内存中创建和操作图像
在 Cairo 中,一切都被视为绘图操作,即使是对图像的修改也被视为在绘图上下文中进行的操作。
创建图像表面(Surface)的主要目的是为了提供一个统一的接口,使得对不同类型的绘图目标(比如窗口、PDF 文档、图像文件等)进行绘制操作时,能够使用相同的 API 和模式。
总之,将图像存储在 Surface 中的主要目的是为了提供一个统一的、灵活的、可移植的绘图接口,使得开发者可以更容易地进行绘图操作,并且可以轻松地将相同的绘图操作应用于不同的输出目标。
"&