当前位置:首页>python>Python Pyxel库做个小游戏,资源文件的准备和加载

Python Pyxel库做个小游戏,资源文件的准备和加载

  • 2026-10-13 01:34:31
Python Pyxel库做个小游戏,资源文件的准备和加载
在前一段时间我们了解了Pyxel这个有意思的库,今天我们就来看看能不能用它来做个简单的小游戏,不过今天主要看看如何用它的编辑工具,建立资源和对资源进行加载。
首先是启动Pyxel Editor,这是pyxel自带的一个编辑器,今天我用它来简单的画个小飞机。首先启动它,执行
pyxel edit rc.pyxres
这个是我画的两个飞行器,凑合看吧,反正也不专业。ctrl+S它会在当前目录下保存成文件。
接下来我们通过代码加载它看看,pyxel.load加载
# test.py 代码片段def __init__(self):    """游戏类构造函数"""    # 初始化Pyxel窗口(宽160,高120,标题自定义)    pyxel.init(W, H, title="test, Game!!")    # 加载资源文件(路径对应工作目录中的rc.pyxres)    pyxel.load("rc.pyxres")      # 启动游戏循环(update更新逻辑,draw绘制逻辑)    pyxel.run(self.update, self.draw)
在加载资源后,我们需要通过pyxel.blt函数来进行资源裁剪,将它绘制到游戏中的指定位置,可以看下参数:
pyxel.blt(    x,          # 游戏屏幕上的X坐标    y,          # 游戏屏幕上的Y坐标    img_bank,   # 资源文件中的图像库编号(默认0)    u,          # 资源编辑器中图像左上角的X坐标    v,          # 资源编辑器中图像左上角的Y坐标    w,          # 要裁剪的图像宽度    h,          # 要裁剪的图像高度    colkey      # 透明色(指定颜色值,该颜色会显示为透明))
Game类的draw函数负责绘制资源内容
# test.py 代码片段    def draw(self):        # 清空屏幕,背景设为黑色        pyxel.cls(0)        # 绘制飞船1 + 推进器1        pyxel.blt(20, 20, 0, 0, 0, 8, 8, 0)  # 飞船1        pyxel.blt(20, 28, 0, 0, 8, 8, 8, 0)  # 推进器1        # 绘制飞船2 + 推进器2        pyxel.blt(60, 30, 0, 8, 0, 8, 8, 0)  # 飞船2        pyxel.blt(60, 38, 0, 8, 8, 8, 8, 0)  # 推进器2
注意在读取资源内容时,一定要看好资源的内容范围,例如我的第一个飞行器它是资源左上角坐标0,0,宽度8,高度8的一个块,而第二个则是从8,0开始,取宽8,高8的一个区域。这个一定要量好,不然效果就不是这样了。
最后看看完整的可执行代码:
import pyxelimport mathimport random# 游戏窗口尺寸(宽160,高120)W, H = 160, 120  # 游戏核心类class Game:    def __init__(self):        """构造函数:初始化游戏"""        # 初始化Pyxel窗口        pyxel.init(W, H, title="test, Game!!")        # 加载资源文件(确保shooter.pyxres在同一目录)        pyxel.load("rc.pyxres")        pyxel.run(self.update, self.draw)    def update(self):        """更新逻辑"""        pass    def draw(self):        # 清空屏幕,背景设为黑色        pyxel.cls(0)        # 绘制飞船1 + 推进器1        pyxel.blt(20, 20, 0, 0, 0, 8, 8, 0)  # 飞船1        pyxel.blt(20, 28, 0, 0, 8, 8, 8, 0)  # 推进器1        # 绘制飞船2 + 推进器2        pyxel.blt(60, 30, 0, 8, 0, 8, 8, 0)  # 飞船2        pyxel.blt(60, 38, 0, 8, 8, 8, 8, 0)  # 推进器2# 程序入口def main():    Game()if __name__ == "__main__":    main()
上效果:
怎么样?是不是挺简单的,有手就行,赶快试试。下次我们再继续搞事情。

最新文章

随机文章