PLC也能制作小游戏----Codesys编写猜数字小游戏

1、序言

作者作为工控人员,有点羡慕学计算机的程序员,可以通过代码实现各种功能的软件以及游戏(这个是重点,嘿嘿),就像windows以前自带的纸牌,空当接龙,扫雷等。最近发现,Codesys编程软件拥有的各种编译方式,以及强大的可视化功能,完全可以实现类似的小游戏程序编写,让疲惫的工控人员在调机的空闲之余可以休闲下,哈。

本文先尝试下编写一个容易点的小游戏,十几年前的文曲星上比较流行的,猜数字小游戏。

2、猜数字规则

游戏规则如下:

a、生成被猜数,4个数字,由0-9中随机产生,且4个数字不重复,例如:1256、0123、8563…;

b、猜数字,由玩家输入4位数字,对比两个数字,给出猜测结果提示,提示说明,玩家输入4个数字中,存在有被猜数内的数字,且位置相同的,提示为A,存在有被猜数内的数字,且位置相同的,提示为B;AB的数量就是提示结果,比如被猜数为:3025,玩家猜测:1234,提示结果为:0A2B,意思是1234中有2个数字存在被猜数中,但位置不对;若猜测0123,则提示结果为:1A2B,即0123中存在1个数字,存在被猜数中,且位置正确,还有2个数字,存在被猜数中,但位置不对;

c、玩家根据结果提示分析并重新猜测,直到猜测结果为4A0B,则表示猜中了;

d、玩家可猜测是次数最多为7次,若7次还没猜出,则游戏失败。

3、程序编写

猜数字的逻辑并不复杂,因此不做流程图了,直接根据游戏规则编写程序,主要包括:

a、生成4位不重复的数字,作为被猜数;

b、比较玩家输入的数字与被猜数,生成猜测结果;

c、数据显示与类型转换,需要用到的类型主要了整形和字符型。

3.1、生成随机数

codesys并没有生成随机数的函数,需要下载oscat库,其中有个GEN_RDM函数可以生成随机数,不过其函数说明全英文的,目前还没研究明白,只能通过其他方法。

本文参考了一个生成随机数较为简洁的办法,设置一个ms级别的定时器(codesys最小可设置1ms),让x1在0-9依次循环,通过按钮操作,当检测到按钮上升沿时,x1的值就是生成的随机数的第一位数据,然后让x2在0-9中去除x1后的范围内循环,同样的原理生成x2,依次生成x3,x4,组合就得到4位的随机数。

此方法可能存在一定的偶然性,并不能完全随机,但对于本文中猜数字游戏来说,已经可以使用了,并没有对随机数严格的要求。生成程序用梯形图实现,程序如下:

a、建立4个数组,位数分别为7,8,9,10

b、建立毫秒级循环

c、 依次排除掉选中的数

d、上升沿取数据

 e、数据转换成字符型 ,显示使用(整数型最高位为0是只能显示3个数)

 3.2、输入数据比较及提示结果

3.3、结果判断

 

 4、可视化仿真

4.1、创建画面,变量连接(变量连接方法略过,有疑问可参考博文ST语言实现冒泡排序的文章:https://blog.csdn.net/qq_19979629/article/details/122273823

 4.2、游戏运行

运行视频如下:

软PLC也能制作小游戏----Codesys编写猜数字小游戏

 5、综述

通过编程和可视化仿真,Codesys基本可以实现猜数字小游戏的功能,接下来空闲之余将尝试更多休闲游戏的编写哈,以便开发更多的codesys功能,嘿嘿。

本文所用Codesys版本为V3.5.14.10,本文所涉及程序可在以下地址下载:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tnt1314

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值