python的复古游戏引擎

pyxel的Python项目详细描述


[英语日语其他语言]

pyxel是python的复古游戏引擎。

得益于复古游戏机启发的简单规格,例如只能显示16种颜色,同时只能播放4种声音,您可以尽情享受制作像素艺术风格的游戏。

Pyxel游戏机、API和调色板的规格是指Awesomepico-8tic-80

pyxel是开源的,可以免费使用。让我们开始做一个复古游戏与紫杉醇!

规格

  • 在Windows、Mac和Linux上运行
  • 用python3编写代码
  • 固定16色调色板
  • 256x256大小3个图像库
  • 256x256大小8 tileMaps
  • 4个频道,64个可定义的声音
  • 8首可以任意组合的音乐NDS
  • 键盘、鼠标和游戏板输入
  • 图像和声音编辑器

调色板

如何安装

窗口

在安装python3(3.7或更高版本)之后,下面的pip命令将安装pyxel:

pip install -U pyxel

MAC

在安装python3(3.7版或更高版本)和sdl2之后,使用pip命令安装pyxel。

如果自制软件包管理器已就绪,则以下命令将安装所有必需的软件包:

brew install python3 sdl2 sdl2_image
pip3 install -U pyxel

Linux

以适合每个发行版的方式安装python3(3.7或更高版本)和所需的包。

ubuntu:

sudo apt install python3 python3-pip libsdl2-dev libsdl2-image-dev
sudo pip3 install -U pyxel

其他环境

要在上述环境(32位Linux、覆盆子PI等)之外的环境中安装Pyxel,请按照以下步骤进行构建:

安装必要的工具和软件包
    C++构建工具链(应该包括GCC和make命令)
  • libsdl2 dev和libsdl2 image dev
  • python3(3.7或更高版本)和pip命令

在任何文件夹中执行以下命令

git clone https://github.com/kitao/pyxel.git
cd pyxel
make -C pyxel/core clean all
pip3 install .

安装示例

安装pyxel后,pyxel的示例将使用以下命令复制到当前目录:

install_pyxel_examples

要复制的示例如下:

这些示例可以像普通的python代码一样执行:

窗口:

cd pyxel_examples
python 01_hello_pyxel.py

Mac/Linux:

cd pyxel_examples
python3 01_hello_pyxel.py

如何使用

创建pyxel应用程序

在python代码中导入pyxel模块后,首先使用init函数指定窗口大小,然后使用run函数启动pyxel应用程序。

importpyxelpyxel.init(160,120)defupdate():ifpyxel.btnp(pyxel.KEY_Q):pyxel.quit()defdraw():pyxel.cls(0)pyxel.rect(10,10,20,20,11)pyxel.run(update,draw)

run函数的参数是update函数,用于更新每个帧,并在必要时draw函数用于绘制屏幕。

在实际的应用程序中,建议将pyxel代码包装在一个类中,如下所示:

importpyxelclassApp:def__init__(self):pyxel.init(160,120)self.x=0pyxel.run(self.update,self.draw)defupdate(self):self.x=(self.x+1)%pyxel.widthdefdraw(self):pyxel.cls(0)pyxel.rect(self.x,0,8,8,9)App()

也可以使用showflip函数编写简单的代码来绘制简单的图形和动画。

show功能将显示屏幕,并等待按下esc键。

pip install -U pyxel
0

翻转功能更新屏幕一次。

pip install -U pyxel
1

特殊控制

当Pyxel应用程序运行时,可以执行以下特殊控件:

  • esc
    退出应用程序
  • alt(选项)+1
    将屏幕截图保存到桌面
  • alt(选项)+2
    重置屏幕捕获视频的录制开始时间
  • alt(选项)+3
    将屏幕捕获视频(gif)保存到桌面(最长30秒)
  • alt(选项)+0
    切换性能监视器(fps、更新时间和绘图时间)
  • alt(选项)+输入 全屏切换

如何创建资源

附加的Pyxel编辑器可以创建Pyxel应用程序中使用的图像和声音。

pyxel编辑器从以下命令开始:

pip install -U pyxel
2

如果指定的pyxel资源文件(.pyxres)存在,则加载该文件;如果该文件不存在,则使用指定的名称创建新文件。 如果省略资源文件,则名称为my_resource.pyxres

启动Pyxel编辑器后,可以通过拖放另一个资源文件来切换文件。

创建的资源文件可以用load函数加载。

pyxel编辑器有以下编辑模式。

图像编辑器:

编辑图像库的模式。

通过将PNG文件拖放到图像编辑器屏幕上,可以将图像加载到当前选定的图像库中。

tilemap编辑器:

编辑tileMaps的模式,其中图像库的图像以平铺模式排列。

声音编辑器:

编辑声音的模式。

音乐编辑器:

按播放顺序排列声音的音乐编辑模式。

其他资源创建方法

pyxel图像和tilemaps也可以通过以下方式创建:

  • 使用image.settilemap.set函数从字符串列表中创建图像
  • 使用image.load函数在Pyxel调色板中加载PNG文件

由于Pyxel使用与pico-8相同的调色板,因此在为Pyxel创建PNG图像时,建议在pico-8调色板模式下使用aprite。

pyxel声音也可以通过以下方式创建:

  • 使用sound.setmusic.set函数从字符串中创建声音

有关这些函数的用法,请参阅API参考资料。

如何创建独立可执行文件

通过使用附加的pyxel打包程序,一个独立的可执行文件即使在没有安装python的环境中也可以创建。

要创建独立的可执行文件,请使用pyxelpackager命令指定用于启动应用程序的python文件,如下所示:

pip install -U pyxel
3

过程完成后,将在dist文件夹中创建一个独立的可执行文件。

如果还需要.pyxres和.png文件等资源,请将它们放在assets文件夹下,并将其包括在内。

API参考

系统

  • 宽度高度
    屏幕的宽度和高度

  • 帧计数
    经过的帧数

  • init(宽度、高度、[caption]、[scale]、[palette]、[fps]、[border-width]、[border-color])
    使用屏幕大小(宽度高度)初始化pyxel应用程序。屏幕的最大宽度和高度为256
    也可以用标题指定窗口标题,用比例指定显示放大倍数,用调色板指定调色板颜色,用fps指定帧率,用边框和指定屏幕外的边距宽度和颜色。>边框颜色调色板指定为16个24位颜色元素的列表,边框颜色指定为24位颜色

  • 运行(更新,绘制)
    启动pyxel应用程序并调用update函数进行帧更新,调用draw函数进行绘制

  • 退出()
    在当前帧结束时退出pyxel应用程序

  • flip()
    强制绘制屏幕(不要在正常应用中使用)

  • show()
    绘制屏幕并一直等待(不要在正常应用程序中使用)

资源

  • 保存(文件名)
    将资源文件(.pyxres)保存到执行脚本的目录中

  • 加载(文件名)
    从执行脚本的目录中读取资源文件(.pyxres)

输入

  • 鼠标x鼠标y
    鼠标光标的当前位置

  • btn(键)
    如果按了键,则返回true,否则返回false

  • btnp(键,[保持],[周期])
    如果在该帧按下键,则返回true,否则返回false。当指定了holdperiod时,当键被按住超过hold帧时,将在period帧间隔返回true

  • btnr(键)
    如果在该帧处释放了键,则返回true,否则返回false

  • 鼠标(可见)
    如果visibletrue,则显示鼠标光标。如果false,请将其隐藏。即使没有显示鼠标光标,其位置也会更新。

图形

  • 图像(img,[系统])
    操作图像库img(0-2)(参见图像类)。如果系统真,则可以访问系统的图像库。3用于字体和资源编辑器。4用于显示屏
    例如pyxel.image(0).load(0,0,"title.png")

  • tilemap(tm)
    操作tilemaptm(0-7)(参见tilemap类)

  • 剪辑(x,y,w,h)
    将屏幕的绘图区域从(xy)设置为widthw和heighth. 使用clip()

    将绘图区域重置为全屏
  • pal(col1,col2)
    在绘图时将colorcol1替换为col2pal()重置为初始调色板

  • cls(col)
    用颜色清除屏幕

  • 像素(x,y,col)
    在(xy)处绘制颜色像素

  • 行(x1,y1,x2,y2,col)
    从(x1y1)到(x2y2)绘制一条颜色线

  • 矩形(x,y,w,h,col)
    从(xy)绘制一个宽度w、高度h和颜色col的矩形

  • 矩形(x,y,w,h,col)
    从(xy)绘制宽度w、高度h和颜色col的矩形轮廓

  • 循环(x,y,r,col)
    在(xy)处画一个半径r和颜色col的圆

  • 循环(x,y,r,col)
    在(xy)处绘制半径r和颜色col的圆的轮廓

  • blt(x,y,img,u,v,w,h,[colkey])
    将大小区域(wh)从图像库的(uv)复制到(xy)。如果为w和/或h设置负值,它将水平和/或垂直反转。如果指定了COLKEY,则视为透明色

  • bltm(x,y,tm,u,v,w,h,[colkey])
    根据尺寸信息(wh)从(uv)绘制tileMapTM(0-7)到(xy)。如果指定了COLKEY,则视为透明色。以8x8的大小绘制tilemap的平铺,如果平铺号为0,则表示图像库的区域(0,0)-(7,7),如果为1,则表示(8,0)-(15,0)

  • 文本(x,y,s,col)
    在(xy)处绘制颜色col的字符串s

音频

  • 声音(snd,[系统])
    操作声音snd(0-63)(参见声音类)。如果系统,则可以访问系统的声音64
    例如pyxel.sound(0.speed=60

  • 音乐(理学硕士)
    操作音乐msc(0-7)(请参见音乐类)

  • 播放POS(ch)
    获取通道ch的声音播放位置。100和1000表示音号,1和10表示音符号。停止播放时,返回-1

  • 播放(ch,snd,loop=false)
    在频道上播放声音snd(0-63)。当snd是列表时按顺序播放

  • playm(msc,loop=false)
    播放音乐msc(0-7)

  • 停止([ch])
    停止播放所有频道。如果指定了ch(0-3),则仅停止相应的频道

图像类

  • 宽度高度
    图像的宽度和高度

  • 数据
    图像数据(256x256二维列表)

  • 获取(x,y)
    在(xy)检索图像数据

  • 设置(x,y,数据)
    将图像的数据设置为(xy)的值或字符串列表
    例如,pyxel.image(0).set(10,10,["1234","5678","9ABC","defg"])

  • 加载(x,y,文件名)
    从执行脚本的目录中读取png图像(xy

  • 复制(x,y,img,u,v,w,h)
    将大小区域(wh)从图像库的(uv)复制到(xy

tilemap类

  • 宽度高度
    tilemap的宽度和高度

  • 数据
    tilemap的数据(256x256二维列表)

  • 重新加注
    tilemap引用的图像库

  • 获取(x,y)
    检索tilemap的数据(xy

  • 设置(x,y,数据)
    通过值或字符串列表将tilemap的数据设置为(xy)。 例如pyxel.tilemap(0).set(0,0,["000102","202122","a0a1a2","b0b1b2"])

  • 复制(x,y,tm,u,v,w,h)
    将tilemaptm(0-7)的大小区域(wv)复制到(xy

声音等级

  • 注意
    注释列表(0-127)(33='A2'=440Hz)

  • 音调
    音调列表(0:三角形/1:正方形/2:脉冲/3:噪声)

  • 音量
    音量列表(0-7)

  • 效果
    效果列表(0:无/1:幻灯片/2:振动/3:淡出)

  • 速度
    一个音符的长度(120=1秒/音)

  • 设置(音符、音调、音量、效果、速度)
    用字符串设置音符、音调、音量和效果。如果音调、音量和效果长度短于音符,则从头开始重复此过程

  • 设置注释(注释)
    用"cdefgab"+"-"+"0123"或"r"组成的字符串设置注释。不区分大小写,忽略空白
    例如pyxel.sound(0).set_note("g2b-2d3r rf3f3f3")

  • 设置音调(音调)
    用"tspn"组成的字符串设置音调。不区分大小写,忽略空白
    例如pyxel.sound(0).set_tone("ttss pppn")

  • 设置音量(音量)
    使用由"01234567"组成的字符串设置卷。不区分大小写,忽略空白
    例如pyxel.sound(0).设置音量("77777531")

  • 设置效果(效果)
    用"nsvf"字符串设置效果。不区分大小写,忽略空白
    例如pyxel.sound(0).set_effect("NFNF NVV")

音乐课

  • ch0
    频道0上播放的声音列表(0-63)。如果指定了空列表,则该频道不用于播放

  • ch1
    频道1上播放的声音列表(0-63)。如果指定了空列表,则该频道不用于播放

  • ch2
    频道2上播放的声音列表(0-63)。如果指定了空列表,则该频道不用于播放

  • ch3
    频道3上播放的声音列表(0-63)。如果指定了空列表,则该频道不用于播放

  • 设置(ch0,ch1,ch2,ch3)
    设置所有频道的声音列表(0-63)。如果指定了空列表,则该频道不用于播放
    例如pyxel.music(0).set([0,1],[2,3],[4],])

  • 设置ch0(数据)
    设置频道0的声音列表(0-63)

  • 设置ch1(数据)
    设置声道1的声音列表(0-63)

  • 设置CH2(数据)
    设置声道2的声音列表(0-63)

  • 设置CH3(数据)
    设置声道3的声音列表(0-63)

如何贡献

提交问题

使用问题跟踪器提交错误报告和功能/增强请求。 在提交新问题之前,请搜索问题跟踪程序以确保没有类似的未决问题。

提交报告时,请从该链接中选择适当的模板。

手动测试

任何人手动测试代码和报告错误或建议的问题跟踪器增强是非常欢迎的!

提交拉取请求

补丁/修复以请求请求(prs)的形式被接受。确保问题"问题跟踪程序"中的"拉取请求地址"已打开。

提交的请求被视为同意在麻省理工学院许可证下发布。

其他信息

许可证

Pyxel位于麻省理工学院许可证下。只要许可软件的所有副本包括麻省理工学院许可条款和版权声明的副本,就可以在专有软件中重复使用。

Pyxel使用以下库:

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何使用Netbeans在Java中创建可执行文件   swing Set不透明(真/假);JAVA   java JPA无法删除具有onotomany关系和cascatype all的实体   java Hibernate自参考映射难题   Java/从字符串到Java代码   java为什么我已经在取整了,却得到了一个无终止小数扩展?   java Wicket onsubmit信息对话框   java如何使用类、类加载器和URL获取资源   java在多模块项目中使用License Maven插件时出错   java HashSet“contains”方法是如何工作的?   图像JavaPNG显示为黑色   java如何在保持内容完整的同时在两个活动之间切换?   JAVA在Tomcat 7.0.27中,WAR无法为Prod正确解包   listview的java onclicklistener   JavaXPages托管Bean可以跨多个数据库工作吗?   java无法停止服务空对象引用错误Android   java将UTF8编码的字符串转换为人类可读的字符串   JavaSpring与JBossSAML的集成   java如何替换AuthorizationCodeInstalledApp类?