在前一段时间我们了解了Pyxel这个有意思的库,今天我们就来看看能不能用它来做个简单的小游戏,不过今天主要看看如何用它的编辑工具,建立资源和对资源进行加载。首先是启动Pyxel Editor,这是pyxel自带的一个编辑器,今天我用它来简单的画个小飞机。首先启动它,执行这个是我画的两个飞行器,凑合看吧,反正也不专业。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 # 透明色(指定颜色值,该颜色会显示为透明))
# 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()
怎么样?是不是挺简单的,有手就行,赶快试试。下次我们再继续搞事情。