Cpse

提供在Windows控制台开发游戏的引擎


Keywords
cmd, game-engine, windows
License
MIT
Install
pip install Cpse==0.0.1

Documentation

代码使用说明 Code instructions

Cpse核心文件位于./CpseCore/中,主文件夹中DemoGame.py是基于Cpse开发的一款示例游戏。详细介绍以及说明文档请查看CPSE2说明文档.pdf

The CPSE core file is located in ./CpseCore/ , DemoGame.py is a sample game developed based on CPSE. Please refer to CPSE2说明文档.pdf for detailed introduction and documentation

Cpse依赖模块:pynput、pywin32

CPSE dependent modules: pynput, pywin32

更新计划

近期更新计划

1.用C#重写渲染逻辑,加快运行效率

2.增加物理引擎

目前待解决问题

1.渲染逻辑低效

2.文字渲染易错位

介绍

CPSE2是一款基于Python的Windows平台控制台画面渲染引擎,提供了丰富的游戏引擎功能,可以实现在Windows控制台高效率渲染画面以及开发游戏。

Cpse2 is a Python based console image rendering engine for Windows platform. It provides rich game engine functions and can achieve efficient rendering of images and game development on Windows console.

基本类

CpseEngine

CpseEngine为CPSE2基本类,负责CPSE2的画面渲染,进行CPSE2的任何渲染操作均需要通过实例化后的CpseEngine进行操作,CpseEngine中亦包含许多实用方法为开发提供帮助。

Code
Cpse.CpseEngine()
参数列表
None
示例Code
cpse = Cpse.CpseEngine()

CpseFrame

CpseFrame为CPSE2基本类,负责CPSE2的画面组建,所有CPSE2所渲染出的画面均为一个CpseFrame,可通过调整实例化后的CpseFrame改变画面。CpseFrame中可添加CpseObject,在CpseFrame中可以组织调整 CpseObject,最后提供给CpseEngine进行渲染。

Code
Cpse.CpseFrame(frameSize:tuple)
参数列表
frameSize Tuple Frame的宽高
Code
frame = Cpse.CpseFrame((50,50))

CpseObject

CpseObject为CPSE2基本类,作为CPSE2画面的基本组成部分。

Code
Cpse.CpseObject(objList:list,anchorPoint:tuple)
参数列表
objList List Object的组成列表
anchorPoint Tuple Object的锚点
Code
obj = Cpse.CpseObject([[0,0,0],[1,0,0],[0,1,0],[1,1,0]],(0,0))

基本方法介绍

CpseEngine

CpseEngine.StartRenderingAndShowThread()

Code
CpseEngine.StartRenderingAndShowThread(frame,maxFPs,updata)
介绍
启动CpseEngine渲染Frame并Show的进程
参数列表
frame CpseFrame 被渲染的Frame
maxFPs int 最大渲染帧率;可空,默认100 Fps
updata function 更新函数,每渲染帧会执行一次;可空,默认无函数
Code
cpse.StartRenderingAndShowThread(frame,maxFPs=120,updata=updata)

CpseEngine.ExitRenderingAndShowThread()

Code
CpseEngine.ExitRenderingAndShowThread()
介绍
结束CpseEngine渲染Frame并Show的进程
Code
cpse.ExitRenderingAndShowThread()

CpseEngine.RenderingFrame()

Code
CpseEngine.RenderingFrame(frame)
介绍
渲染Frame,返回渲染完成后的CRObj对象,该对象为Frame的渲染结果。该方法仅渲染Frame,并不会显示到控制台,需使用CpseEngine.ShowCRObj才可以将CRObj显示到控制台。如非使用预渲染技术或自定义渲染过程,建议直接使用包含渲染和显示的CpseEngine.StartRenderingAndShowThread()
参数列表
frame CpseFrame 被渲染的Frame
返回值类型
CRObj 已完成渲染的Frame,可用CpseEngine.ShowCRObj显示到控制台
Code
crobj = cpse.RenderingFrame(frame)

CpseEngine.ShowCRObj()

Code
CpseEngine.ShowCRObj(crobj)
介绍
将已经完成渲染的Frame显示到控制台,该方法只会显示一帧,请配合循环使用。如非使用预渲染技术或自定义渲染过程,建议直接使用包含渲染和显示的CpseEngine.StartRenderingAndShowThread()
参数列表
Crobj CRObj 已经渲染完成的Frame,可用CpseEngine.RenderingFrame渲染Frame
Code
cpse.ShowCRObj(crobj)

CpseEngine.ObjectMoveKeyboardControlSet()

Code
CpseEngine.ObjectMoveKeyboardControlSet(cpseFrame,obj,buttonTuple,speed)
介绍
快速创建CpseObject键盘控制上下左右移动
参数列表
cpseFrame CpseFrame 被控制的CpseObject所在的Frame
obj CpseObject 被控制的CpseObject
buttonTuple Tuple 上下左右四个方向的控制按键;可空,默认为("w","s","a","d")
speed int 移动速度;可空,默认为1
Code
cpse.ObjectMoveKeyboardControlSet(frame,obj)

CpseEngine.WaitRun()

Code
CpseEngine.WaitRun(time,function)
介绍
等待时间后执行函数
参数列表
time float 等待的时间
function function 被执行的函数
Code
cpse.WaitRun(2,Run)

CpseEngine.WaitRunRe()

Code
CpseEngine.WaitRunRe(time,function)
介绍
每过去指定时间后运行函数
参数列表
time float 等待的时间
function function 被执行的函数
Code
cpse.WaitRunRe(2,Run)

CpseEngine.GetKeyboardButtonDown()

Code
CpseEngine.GetKeyboardButtonDown(key)
介绍
获取按键是否按下
参数列表
Key Any 被获取的按键,字母按键提供字母字符串,控制按键调用Cpse的key变量
Code
cpse.GetKeyboardButtonDown("j") cpse.GetKeyboardButtonDown(Cpse.key.ctrl_l)

CpseFrame

CpseFrame.AddObject()

Code
CpseFrame.AddObject(obj,pos)
介绍
用于往Frame中添加Object
参数列表
obj CpseObject 被添加的CpseObject
pos tuple obj在Frame中的位置
Code
frame.AddObject(obj,(0,1))

CpseFrame.DelObject()

Code
CpseFrame.AddObject(obj)
介绍
删除Frame中第一个同类型的CpseObject
参数列表
obj CpseObject 被删除的CpseObject
Code
frame.DelObject(obj)

CpseFrame.SetObjectPoint()

Code
CpseFrame.SetObjectPoint(obj,pos)
介绍
设置Object在Frame中的位置
参数列表
obj CpseObject 被设置的CpseObject
pos tuple 设置点
Code
frame.SetObjectPoint(obj,(50,50))

CpseFrame.GetObjectPoint()

Code
CpseFrame.GetObjectPoint(obj)
介绍
获取Object在Frame中的位置
参数列表
obj CpseObject 被获取的CpseObject
返回值类型
tuple CpseObject的所在点
Code
pos = frame.GetObjectPoint(obj)

CpseFrame.MoveObject()

Code
CpseFrame.MoveObject(obj,direction = "f",distance = 1)
介绍
移动Object
参数列表
obj CpseObject 被移动的CpseObject
direction str 移动方向,提供str指定方向,默认为f("f"前,"b"后,"u"上,"d"下)
distance int 移动距离,默认为1
Code
frame.MoveObject(obj)

CpseFrame.SetObjectLifeCycle()

Code
CpseFrame.SetObjectLifeCycle(obj,time,function)
介绍
设置Object的生命周期,生命周期时间结束后会被销毁
参数列表
obj CpseObject 被设置的CpseObject
time float 生命周期时间
function function 生命周期函数,生命周期结束后会执行一次
Code
frame.SetObjectLifeCycle(Obj,1)

CpseObject

CpseObject.SetObjcetList()

Code
CpseObjct.SetObjectList(_list)
介绍
设置Object的列表
参数列表
_list list 被设置的列表
Code
obj.SetObjectList(_list)

CpseObject.GetObjcetList()

Code
CpseObjct.GetObjectList()
介绍
获取Object的ObjectList
返回值类型
list CpseObject的List
Code
_list = obj.GetObjectList()

CpseObject.SetAnchorPoint()

Code
CpseObjct.SetAnchorPoint(anchorPoint)
介绍
设置Object的锚点
参数列表
anchorPoint tuple 被设置的锚点
Code
obj.SetAnchorPoint((1,1))

CpseObject.GetAnchorPoint()

Code
CpseObjct.GetAnchorPoint()
介绍
获取Object的锚点
返回值类型
tuple CpseObject的锚点
Code
pos = obj.GetAnchorPoint()

CpseObject.SetTag()

Code
CpseObjct.SetTag(tag)
介绍
设置Object的标签
参数列表
tag str 标签名
Code
obj.SetTag("Player")

CpseObject.GetTag()

Code
CpseObjct.GetTag()
介绍
获取Object的标签
返回值类型
str CpseObject的标签
Code
tag = obj.GetTag()

CpseObject.SetKeyPoint()

Code
CpseObjct.SetKeyPoint(posTag,pos)
介绍
用于创建/更改Object的关键点
参数列表
posTag str 关键点标签
pos tuple 关键点坐标
Code
obj.SetKeyPoint("muzzle",(-1,-1))

CpseObject.GetKeyPoint()

Code
CpseObjct.GetKeyPoint(posTag)
介绍
获取Object的关键点
参数列表
posTag str 关键点标签
返回值类型
tuple CpseObject的关键点坐标
Code
pos = obj.GetKeyPoint("muzzle")

CpseObject.AcceptCollisionStart()

Code
CpseObjct.AcceptCollisionStart(trigger)
介绍
启用Object的碰撞检测,每帧若触发碰撞会触发trigger函数
参数列表
trigger function 触发函数,该函数需要设置接受下述参数:"target",用于获取被碰撞对象的CpseObject;"selfObj",用于碰撞体获取自身。
Code
obj.AcceptCollisionStart(Trigger_Collision_Obj)

CpseObject.AcceptCollisionEnd()

Code
CpseObjct.AcceptCollisionEnd()
介绍
关闭Object的碰撞检测
Code
obj.AcceptCollisionEnd()

CpseObject.CopyObject()

Code
CpseObjct.GetKeyPoint(posTag)
介绍
将该CpseObject复制,返回复制完成的CpseObject
返回值类型
CpseObject 复制完成的CpseObject
Code
tempObj = Obj.CopyObject()

CpseObject.TextToObjectList()

Code
CpseObjct.TextToObjectList(text,color = 0x07)
介绍
静态方法。将Text转换为CpseObjectList,以此显示文字,暂不支持多行。部分半角符号会出现渲染错误。
参数列表
posTag str 被转换的文字
color int 文字颜色,提供十六进制数,默认为黑色(0x07)
返回值类型
list 返回CpseObjectList
Code
obj = CpseObject(CpseObject.TextToObjectList(f"您的得分:{score}"),(0,0))