查看: 2182|回复: 20
收起左侧

[教程经验] 【发帖达人赛】双人贪吃蛇小游戏

kkss 2022-4-11 21:25:46 | 显示全部楼层 |阅读模式
邀请回答

马上注册,享受更多特权

您需要 登录 才可以下载或查看,没有帐号?立即注册   

x
最近一直在论坛和官网学习汇川的视频,刚好原来做过一个贪吃蛇小游戏,手边有个拿过来测试的AC802,就尝试用AC802实现了这个个贪吃蛇游戏。
做完就放了一阵,刚好看到有小朋友玩贪吃蛇大战,就试着把程序改进,方便以后做3人或者更多人。做的过程中也有不少的小插曲,也得到了群里不少群友的热心帮助,更离不开水滴社区里提供的各种资料(也灌了不少水)。程序无偿提供,在此感谢汇川和社区的各位朋友。

一、界面
基于CODESYS可视化,打不开的朋友看下有无视图管理器,有的话删除就可以运行。
左右侧是Player1 Player2 启用按钮  中间是启动和复位。下方就是上下左右按钮了,因为通信周期的关系,当触发移动频率高的时候HMI屏幕可能效果不佳(没想到更好的方法解决)。
1.png
二、程序实现
主程序分了3部分实现
1、贪吃蛇本体(实现贪吃蛇移动,游戏结束判断,初始化)
2、食物(实现食物的随机生成)
3、地图 (实现贪吃蛇和食物的显示)
2.png

(1)贪吃蛇本体FB

依次是方向判断-> 等级赋值(切换移动速度)->根据速度生成移动脉冲 ->触发移动
3.png
移动部分ACT如下
触发移动脉冲后,执行对应方向的动作,以向下为例
本体坐标的头部对应方向的坐标值 -1,然后执行判断ACT,如果没有碰撞就执行吃食物的ACT,最后移动,移动完成将头部坐标置0。
4.png

判断游戏状态ACT如下
判断是否超出地图边界,是否碰撞到其他地图上的点(此处偷懒了,为了不使食物影响到碰撞判断先将食物从地图上清除了,这样直接判断地图上对应点就可以判断是否碰撞)。
如果超出地图边界或者碰撞到其他蛇,就输出游戏结束状态。
5.png



吃食物ACT如下
判断贪吃蛇头部坐标是否和食物坐标重合,重合就将长度加1,然后计分。
6.png

移动ACT
for循环将身体坐标循环移位
7.png

(2)地图FB
这一部分其实有个小插曲,当时请教了微信群里的网友,本来计划输入部分包括地图,贪吃蛇本体,食物都使用ARRAY 方便以后扩展,但是贪吃蛇本体部分的结构体是嵌套的数组,在程序里使用        snakes.body[j].ix 类似这样寻址程序执行时候指针始终指向第一个元素snakes.body[0].ix 无奈就用了固定长度的数组。 当时群里的网友提了个很好的建议,使用临时变量将snakes.body[0]读取完成再循环应该是可行的,写入的话循环结束再写入。最近事情比较多懒得改了,有兴趣的朋友可以试一下。
8.png

(3)食物FB
这部分相对比较简单,判断下食物状态,生成随机坐标。这里使用了REPEAT,值得注意的是RDM这个OSCAT库里的在一个扫描周期内连续调用生成的值是一样的,我做了修改,将读取的PLC时间改为了ns,这样在一个循环内就完成了食物坐标的生成。
9.png

结束语
通过这个小游戏实现的过程,学习到了很多新的知识,最后再次感谢汇川,社区内的中文教程平易近人。希望汇川越做越好,以后也会有更多机会使用汇川的产品。
预告,俄罗斯方块后续分享给大家。
image.png PS:程序分段压缩,下载后按照截图修改后缀。
贪吃蛇220411-006.zip (3.86 MB, 下载次数: 186)




上一篇:小程·叙-系列连载01:流水灯
下一篇:【发帖达人赛】+汇川中型PLC读取显示伺服面板故障代码

已有 1 人打赏作者

Inovance 赏了楼主100水滴
回复 邀请回答送花

使用道具 举报

Slimming 2022-4-11 21:31:35 | 显示全部楼层
感谢分享,HMI的脚本可直接实现贪吃蛇游戏,楼主可以去我的帖子看看,画布canvas做的。
【发帖达人赛】Javascript和IT7000脚本
http://bbs.inovance.com/forum.php?mod=viewthread&tid=9063
(出处: 汇川技术官网-水滴社区)
回复 送花

使用道具 举报

我愿人长久 2022-4-12 08:09:00 | 显示全部楼层
感谢分享 4-01.png 27-01.png
回复 送花

使用道具 举报

yaojin 2022-4-12 09:13:16 | 显示全部楼层
楼主:您好!这个游戏画面出不来,是咋回事??

点评

截图发一下  发表于 2022-4-12 14:21
回复 送花

使用道具 举报

91521 2022-4-12 16:30:51 | 显示全部楼层
AC802感觉很委屈  工业用的变家用了   并且还不顺手
回复 送花

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册   

本版积分规则

有技术问题,就上汇川技术社区

INOVANCE汇川技术 公众号

扫码下载掌上汇川APP

全国服务热线:8:30-17:30

4000-300124

苏州地址:江苏省苏州市吴中区越溪友翔路16号

深圳地址:深圳市龙华新区观澜街道高新技术产业园汇川技术总部大厦

Copyright © 2003-2100 汇川技术 Powered by Discuz! X3.4 ( 苏ICP备12002088号 )
快速回复 返回列表 返回顶部