在线运行python 方案_一种使用Python语言进行在线项目创作的方法与流程

本发明涉及python教学软件技术领域,特别涉及一种使用python语言进行在线项目创作的方法。

背景技术:

在代码运行技术方面,现有浏览器端能够直接运行python的在线编译运行框架比较成熟的为skuplt。

现有市场上python和scratch教学工具同质化比较常见,缺少一种可以进行互动性、趣味性较强的python项目pbl教学工具,有些python需要用户安装较大的软件,对于新手不够友好。

现有python教学软件工具中,通常存在两种方法进行实现,一种是通过安装在计算机本地的软件,对python编译器进行封装,用户在本地进行代码的提交运行,另外一种则是将代码上传到服务器,在云端进行运行后将结果回传给用户。

现有python教学工具内容大都以海龟库为主,用户无法进行复杂交互,做出和scratch的项目创作同样的作品效果,趣味性不强。

技术实现要素:

本发明的目的在于提供一种使用python语言进行在线项目创作的方法,用户不需要像以前那样安装软件或者需要发送代码到服务器运行,而是通过浏览器直接运行python代码,用户打开浏览器就能进行编程的教学或学习,降低了学习门槛,可以快速上手制作项目,降低教授和学习python的难度,以解决上述背景技术中提出的问题。

为实现上述目的,本发明提供如下技术方案:

一种使用python语言进行在线项目创作的方法,采用skuplt作为核心底层运行库,所有创作需要的方法依赖于该库进行封装实现,包括如下步骤:

s101:游戏引擎,项目创作中的背景、人物渲染,声音动效、物体碰撞、重力引擎、坐标系等采用createjs实现,利用createjs对于画布渲染、帧动画、物理引擎支持;

s102:前端方面,采用ace作为在线代码编辑器,支持语法高亮,自动换行,代码补全,段落折叠,提供了较好的用户输入体验;

s103:前端还采用jquery作为前端基础交互框架,提供了网页弹窗、事件绑定、ajax请求、浏览器兼容,降低了前端研发难度和时间成本。

进一步地,坐标系采用笛卡尔二维直角坐标系。

进一步地,还包括坐标系转换算法。

进一步地,坐标系转换算法包括如下步骤:

s201:x方向缩放系数=250/x方向画布半径;

s202:x方向位移系数=(x方向画布最小坐标+x方向画布半径)*x方向缩放系数;

s203:y方向缩放系数=250/y方向画布半径;

s204:y方向位移系数=(y方向画布最小坐标+y方向画布半径)*y方向缩放系数。

与现有技术相比,本发明的有益效果是:

1、本发明用户不需要像以前那样安装软件或者需要发送代码到服务器运行,而是通过浏览器直接运行python代码,用户打开浏览器就能进行编程的教学或学习,降低了学习门槛。

2、本发明拥有一整套项目创作方面的工具方法库,包括场景、精灵、声音、海龟、循环、条件判断、事件、动作、状态属性、物理、控制台、数据、列表、函数、数学、几何等内容。通过这些方法库能够实现复杂的项目创作,给python项目制教学提供了工具支撑。

3、本发明在浏览器端即可直接执行,且拥有比原生python编译器更强大工具库,可以快速上手制作项目,降低教授和学习python的难度。

附图说明

图1为本发明的方法流程图;

图2为本发明的createjs坐标系图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

参阅图1,一种使用python语言进行在线项目创作的方法,采用skuplt作为核心底层运行库,所有创作需要的方法依赖于该库进行封装实现,

在游戏引擎方面,项目创作中的背景、人物渲染,声音动效、物体碰撞、重力引擎、坐标系等采用createjs实现,利用了createjs对于画布渲染、帧动画、物理引擎等完善的工具方法支持。

在前端方面,采用了ace作为在线代码编辑器,支持语法高亮,自动换行,代码补全,段落折叠等功能,提供了较好的用户输入体验。

除此之外,前端还采用jquery作为前端基础交互框架,提供了网页弹窗、事件绑定、ajax请求、浏览器兼容等功能,降低了前端研发难度和时间成本。

本发明中的定位系统采用笛卡尔二维直角坐标系,原点在中央,而createjs框架使用的是原点为左上角的坐标系(如图2),因此要使用一种算法进行坐标系转换,本发明采取的是通过画布大小计算出x和y的缩放系数和位移系数,提供坐标系相互转换的算法。

算法具体过程如下:

1)x方向缩放系数=250/x方向画布半径;

2)x方向位移系数=(x方向画布最小坐标+x方向画布半径)*x方向缩放系数;

3)y方向缩放系数=250/y方向画布半径;

4)y方向位移系数=(y方向画布最小坐标+y方向画布半径)*y方向缩放系数。

通过附图2可以看到两个坐标系转换主要区别在原点位置不同和y方向是相反的,因此转换是通过位移系数去做原点位置的调整,并乘以缩放系数。

因此从传统坐标系到createjs坐标系的实现方法为:

createjs坐标系x=笛卡尔坐标系x*x方向缩放系数-x方向位移系数

createjs坐标系y=笛卡尔坐标系y*y方向缩放系数-y方向位移系数

从createjs坐标系到传统坐标系的实现方法为:

传统坐标系x=(createjs坐标系x+x方向位移系数)/x方向缩放系数

传统坐标系y=(createjs坐标系y+y方向位移系数)/y方向缩放系数。

本发明中物理碰撞引擎采用半径法处理边界的问题,通过计算碰撞物体的中心点到对应坐标方向的1/2高度或1/2宽度是否重叠,出现重叠则判断物体碰撞,都没有重叠则物体没有发生碰撞。

物体a上边界(下面简写为at)=物体a的y坐标+a物体的1/2高度。

物体a下边界(下面简写为ab)=物体a的y坐标-a物体的1/2高度。

物体a的左边界(下面简写为al)=物体a的x坐标-a物体的1/2宽度。

物体a的右边界(下面简写为ar)=物体a的x坐标+a物体的1/2宽度。

物体b上边界(下面简写为bt)=物体b的y坐标+b物体的1/2高度。

物体b下边界(下面简写为bb)=物体b的y坐标-b物体的1/2高度。

物体b的左边界(下面简写为bl)=物体b的x坐标-b物体的1/2宽度。

物体b的右边界(下面简写为br)=物体b的x坐标+b物体的1/2宽度。

由于碰撞程序会两两相互比较,即会比较a和b也会比较b和a,因此条件可以只站在a或b角度来判定,即假如at>bb且bt>ab且ar>bl且br>al情况下则判断发生了物体碰撞,反之则没有,继续进行后续比较。最终程序将得出所有画布中的物体两两碰撞情况,再去进行物理碰撞事件的触发。

本发明中重力引擎通过createjs的ticker机制动态设置重力加速度,公式为重力加速度=0.05*重力系数,用户通过设置引擎的重力系数,可改变重力加速度的数值,使得物体下坠速度发生改变。每当ticker行为触发时,物体的速度为当前速度减去重力加速度,物体的y坐标将为当前y坐标加上y方向的速度,从而实现了重力的效果。每次tikcer触发时速度相关具体计算公式如下:

本发明中的事件驱动机制采用了对skuplt的callsimasync异步方法请求进行封装,结合javascript的promise方法,对代码中出现的事件进行异步回调实现,实现了键盘按键事件、鼠标点击事件、定时触发事件、永久触发事件等多种条件触发下的事件。

本发明通过skuplt底层python运行库的支持,利用createjs方法进行相关项目方法的实现,整合用户输入的代码编辑器ace和jquery基础前端库,实现了在浏览器端输入代码,运行python,渲染项目的全过程。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值