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个预制关卡供编辑是快速输入用;
b、创建两个虚轴,X轴,Y轴,显示图形移动的实际变化,通过按键控制轴动作;
c、创建两个可视化界面,界面一为游戏操作界面,界面二为关卡编辑界面;
d、通过各图形不可见控制实现变化功能,通过数据运算判断物体状态和移动位置;
e、具体程序内容不做详细介绍,主要内容看图:
4、程序运行
4.1、操作方法
本文通过Codesys仿真实现运行,操作方法如下:
a、关卡选择,改变关卡数字可以进入对应的关,本例固定关卡为3关,可以输入1,2,3;另外第4关和第5关为可编辑关口,未编辑前选择4或5是,会无数据,显示空白。
b、通过点击上下左右,控制小人移动,无法移动时小人不动作,当绿色箱子推到目标位置是,会显示黄色箱子,表示推到目标为;
c、当操作错误进入死局时,可以点击重新开始恢复到初始状态重新开始玩;
d、点击关卡编辑进入编辑页面。
4.2、关卡编辑
a、选关,只可选4,5(本例只制作了5关,有兴趣的小伙伴可以自行开发更多关卡);
b、关卡数据编辑数据表,20表示墙,10表示绿色箱子,11表示黄色箱子(绿色箱子和旗子重叠),1表示目标旗子,5表示移动小人。
c、创建确认,当关卡数据编辑完成后,点击创建确认将数据写入当前关口中,
d、预制关口与清除数据,将备选的关口数据快速输入,清除数据可将全部数据清零。
e、预览,创建确认点击后,再点击预览可以显示当前编辑出来的对应图形。
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
PLC也能制作小游戏----Codesys编写推箱子小游戏相关推荐
- c#推箱子小游戏代码_推箱子小游戏V1.0制作
小游戏实践 推箱子简易版 大家好,我是努力学习争取成为优秀的Game Producer的路人猿,今天来一起做一个推箱子的简易版本V1.0!下面跟我一起做吧~ 我们用到的软件如下: 编辑类 Visual ...
- 用 Dev-C++ 编写简单的推箱子小游戏
用 Dev-C++ 编写简单的推箱子小游戏 前言 基础版 优化版 前言 以下是显示效果 B站视频讲解:[小游戏]用 Dev-C++ 编写简单的控制台推箱子小游戏 [小游戏]用 Dev-C++ 编写简单 ...
- C++ 简化 推箱子 小游戏 完整代码 参考网络资料 命令行运行 仅供初学者参考交流
C++ 简化 推箱子 小游戏 完整代码 参考网络资料 命令行运行 仅供初学者参考交流 说明:学做了4关推箱子, 仅供初学者参考可用g++ 编译,可以将内容复制到TXT文件,将后缀改为".cp ...
- 手把手教你使用Python实现推箱子小游戏(附完整源码)
文章目录 项目介绍 项目规则 项目接口文档 项目实现过程 前置方法编写 move核心方法编写 项目收尾 项目完善 项目整体源码 项目缺陷分析 项目收获与反思 项目介绍 我们这个项目是一个基于Pytho ...
- Linux下用C语言做小老鼠推箱子的游戏
今天来介绍如何用C语言写一个简单的小游戏,叫做"小老鼠推箱子".虽然游戏的编写过程不复杂,但是我觉得能够从中找到自己对于编程的不足和完善自己的编程思维是最重要的.游戏代码不多,所以 ...
- 用C语言实现推箱子小游戏基础程序plus
目录 设计一个简单的推箱子游戏 功能设计要求: 代码实现 数据定义头文件data_def.h 窗口设置头文件WindowsSet.h WindowsSet.cpp 上移函数 矩阵旋转函数 游戏帧 菜单 ...
- c 语言推箱子vs,C语言推箱子小游戏教程
作者GitHub-Pages个人主页 本教程GitHub-Pages链接 本教程百度云下载地址 本教程编写于2016/11/22 Dawson Lee edited this page on Beij ...
- 使用Rust编写推箱子游戏基础篇
使用Rust编写推箱子游戏教程已翻译完成 项目地址 在线阅读 推箱子是个啥样的游戏嘞? 没玩过推箱子游戏?想当年用诺基亚黑白屏手机的时候就有这款游戏了.你可以下载一个玩一下或者点这里看下维基百科的介绍 ...
- 一个适合初学者的C++推箱子小游戏
一个适合初学者的C++推箱子小游戏 博主最近在学习关于C++的一些基础,这是本人突发奇想做的一个小游戏,编程其实并不难,重要的是,你的思路,以及优化,当然,这个小游戏,本人也是基于一个学习者编写的 本 ...
最新文章
- Aquaculture:天津农科院谢凤行团队揭示菌群预测功能与实际代谢特性的相关性...
- 大数据驱动下的微博社会化推荐
- 【UGV】小车一些图片
- boost::hana::drop_back用法的测试程序
- 如何使用Angular rxjs进行优雅限流
- 小程序开发学习(1)---app.json详解篇
- rem布局 html,移动端h5之rem布局/px2rem
- 【Openstack】实录手动部署Openstack Rocky 双节点(3)- Glance
- 【C语言】结构和指针
- 复杂性思维第二版 二、图
- 自然语言处理基础知识HR
- 雅迪发布高端智能电动车G5 这个售价真的会有人买吗?
- php中三元运算符用法
- CCNP-EIGRP路由认证(附实验PDF下载)
- xcode13创建mac控制台应用程序
- BZOJ 1984: 月下“毛景树” [树链剖分 边权]
- uniapp银行卡卡片
- 开源聚合支付平台学习
- Python 人员值班表
- 基于javascripts的语法特性使用设计原则