PLC也能制作小游戏----Codesys编写推箱子小游戏

 1、序言

        前文已介绍,Codesys编程软件拥有的各种编译方式,以及强大的可视化功能,完全可以实现类似的小游戏程序编写,让疲惫的工控人员在调机的空闲之余可以休闲下,本文编写另一个小游戏,也是十几年前的文曲星上比较流行的,推箱子。

2、游戏规则

a、仓库内有若干个需要搬运的箱子和对应需要推到位的地址;

b、仓库范围内除墙体和箱子外,搬运小人可以随意走动;

c、搬运小人只能推箱子,不能拉箱子,且只能够推动一个箱子,当推的方向前有箱子或者墙时无法推动;

d、只要所有的指定位置都有箱子就算过关。

3、程序编写

3.1、编程思路

要实现推箱子游戏主要包括以下内容:

a、关卡数据:不同的关卡有不同的图形排列方式,图形有墙壁,箱子,目标红旗,推箱小人;

实现方法:关卡图形可以用数组记录,用三维数组记录所有数据,三维分别代表各图形的X坐标和Y坐标,以及对应的关数,通过X,Y坐标对应数据的数值来确定图形的样子,设定墙壁=20,箱子=10,目标红旗=1,推箱小人=5,则关口数据[2,3,1]=20,表示X轴第3列,Y轴第4行,关数是第2关(数组计数从0开始),即第2关第3列第4行的位置是一堵墙;

b、图形移动:游戏中需要推箱小人一直移动,而箱子也需要对应的移动;

实现方法:Codesys可视化中,可以改变图形的绝对运动的X坐标Y坐标来控制图形的移动,而作为软PLC,Codesys可以使用两个伺服轴来模拟图形的X轴和Y轴坐标。

c、操作方式:游戏的操作性,即如何操作实现游戏功能;

实现方法:使用上下左右4个按键控制小人移动及推进箱子,通过重新开启按钮复位。

d、关卡编辑:自定义的关卡就是需要用户自行编辑;

实现方法:使用数组记录关卡数据,通过改变数组的值就能实现关卡的编辑功能。

e、其他功能:

(1)、通关显示:通过目标位置数值判断是否完成,显示提示,并跳出下一关;

(2)、选关功能:改变关卡对应的数值,选关。

3.2、程序编写

程序编写主要包括:

a、创建多个POU,有梯形图编译模式和ST结构化文本编译模式两种,梯形图编写动作程序,ST编写数据计算和逻辑分析程序等,本例创建3个固定关卡,以及2个预制关卡供编辑是快速输入用;

PLC也能制作小游戏----Codesys编写推箱子小游戏_第1张图片

b、创建两个虚轴,X轴,Y轴,显示图形移动的实际变化,通过按键控制轴动作;PLC也能制作小游戏----Codesys编写推箱子小游戏_第2张图片

c、创建两个可视化界面,界面一为游戏操作界面,界面二为关卡编辑界面;

d、通过各图形不可见控制实现变化功能,通过数据运算判断物体状态和移动位置;

PLC也能制作小游戏----Codesys编写推箱子小游戏_第3张图片PLC也能制作小游戏----Codesys编写推箱子小游戏_第4张图片

PLC也能制作小游戏----Codesys编写推箱子小游戏_第5张图片 e、具体程序内容不做详细介绍,主要内容看图:

 4、程序运行

4.1、操作方法

本文通过Codesys仿真实现运行,操作方法如下:

a、关卡选择,改变关卡数字可以进入对应的关,本例固定关卡为3关,可以输入1,2,3;另外第4关和第5关为可编辑关口,未编辑前选择4或5是,会无数据,显示空白。

b、通过点击上下左右,控制小人移动,无法移动时小人不动作,当绿色箱子推到目标位置是,会显示黄色箱子,表示推到目标为;

c、当操作错误进入死局时,可以点击重新开始恢复到初始状态重新开始玩;

d、点击关卡编辑进入编辑页面。

PLC也能制作小游戏----Codesys编写推箱子小游戏_第6张图片

 4.2、关卡编辑

a、选关,只可选4,5(本例只制作了5关,有兴趣的小伙伴可以自行开发更多关卡);

b、关卡数据编辑数据表,20表示墙,10表示绿色箱子,11表示黄色箱子(绿色箱子和旗子重叠),1表示目标旗子,5表示移动小人。

c、创建确认,当关卡数据编辑完成后,点击创建确认将数据写入当前关口中,

d、预制关口与清除数据,将备选的关口数据快速输入,清除数据可将全部数据清零。

e、预览,创建确认点击后,再点击预览可以显示当前编辑出来的对应图形。

PLC也能制作小游戏----Codesys编写推箱子小游戏_第7张图片

 5、游戏运行

游戏运行效果如下

Codesys使用ST语言开发推箱子小游戏

Codesys使用ST语言开发推箱子小游戏

6、待改进功能

a、本案例仅做简单的推箱子功能,关卡数量较少;

b、未编写记录游戏中每一步的内容,所以无法实现反悔功能;

c、可以通过读写数据库,excel或CSV格式导入关卡数据;

d、测试时间较短,可能存在未知的BUG,哈

7、综述

a、通过本案例开发,Codesys至少可以实现类似VB,C语言等高级语言的基本编程功能。

b、本例基本实现开发目的,但只做研究开发,目前暂无实战意义哈

本文编写所使用的Codesys版本为V3.5.14.10,禾川官网下载,源程序下载地址:

https://download.csdn.net/download/qq_19979629/87266302

你可能感兴趣的:(codesys,可视化仿真,小游戏,开发语言)