24391| 14
|
[教程] 此帖,让mind+不再“单机” |
本帖最后由 Storm 于 2019-8-30 09:54 编辑 大家好。今天给大家分享一个mind+联机项目游戏,可以双人联机玩转mind+(不是一台电脑两人玩哦!)。 鉴于之前和同事出差打乒乓球的灵感。我用mind+做了一个可以联机的类似于乒乓球的游戏。我们先来一个视频压压惊。 【游戏说明】两台主机通过mind+实时模式中MQTT模块进行连接(此模块类似与“广播”功能)。30s的时间,进行对抗赛,分差为A-B的得分,大于0,A获胜;小于0,B获胜。当球打到对方的背景色时加一分。两个画面实时同步。 熟悉mind+或scratch等图形化编程软件的老师应该知道,实时模式一般给我们的印象都是“单机游戏”,只能在一台电脑上玩。那作为一个经历过红警、冰封王座等局域网游戏的“叔叔”,也想把mind+做成一个联机游戏。于是就开始了胆大心细的尝试。 这个项目是在我学习mind+官网上SIoT本地物联网物联网内容时想到的。那接下来就要开始进行讲解了。 在阅读下面内容之前,务必先学习mind+官网中SIoT本地物联网中的内容。(https://mc.dfrobot.com.cn/thread-281102-1-1.html) 或下载学习附件中的“mind+物联网实施模式无硬件”文件 以上是官方教程,实时模式无硬件介绍到此为止。接下来就是对此项目讲解环节。 首先我们来mind+里面的几个模块 通过以上官方教程的指导。我们可以进行一个小结: 1、mind+可以通过程序将文本、数字等信号发送到SIoT网页端,并储存; 2、SIoT网页端可以向mind+发送特定的指令,当mind+收到特定指令时,可以执行自定义编写的程序; 【思考】(我学习时内心的独白) 1、既然SIoT网页端可以向连接相同网络和地址的mind+发送指令,是否可以发出一条指令后,两个主机上的mind+同时接收到相同的指令? 2、是否可以A主机mind+发送消息→SIoT网页端→B主机mind+接收信息→执行程序? 3、“MQTT”模块,是否相当于一个可以跨越主机的“广播”模块? 答案是 YES! 【注意】MQTT模块只有5个通道,意思是只能发送5个不同类别的“广播”。 联机弹弹球游戏开始 设计思路 确定整个游戏所需要的角色:滑板A、滑板B、球。(背景在背景库中选择后,手绘加上两个底色即可) A主机-A滑板 1、实现效果:A主机控制滑板A,B主机的滑板A和A主机同步。 2、程序示例: 3、程序说明:此处选择的是Topic_0通道,发送特定的指令(up&down)。 A主机-B滑板 1、实现效果:受B主机控制,同步进行。 2、程序示例: 3、程序说明:此处还是选择Topic_0通道,发送的特定指令(up1&down1)区分A滑板的指令。 A主机-球 1、实现效果:点击绿旗时,球从中间顶点向下随机方向准备。点击球时发射。碰到边缘反弹;碰到滑板向对面随机角度反弹;碰到对方底色得分。 2、程序示例: 3、程序说明: 图一,设置初始值,且球的初始方向同步(通过变量储存数据,发送到 Topic_1)。注意在MQTT初始化参数*这个部分要添加多个通道。 图二,是接到图一后面的程序,通过一个通道让双方计分并显示的分数同步。 图三,由主机A点击小球,两边同时开始游戏并开始计时。控制小球碰到滑板A和滑板B时,通过两个通道(Topic_2、Topic_3)反弹效果同步。 图四,同步计时并公布比赛结果。(此程序也可以放在前面任意两个角色中) B主机-A滑板 1、实现效果:受A主机控制,在B主机同步。 2、程序示例: 3、程序说明:程序和A主机的程序是相对应的。注意数据要一致。 B主机-B滑板 1、实现效果:由B主机控制,设置初始值,同步A主机。 2、程序示例: 3、程序说明:此处连接了本地SIoT。 B主机-球 1、实现效果:和A主机同步运行 2、程序示例: 3、程序说明:和A主机小球的程序相对应。 Tips 1、滑板的尺寸需要点击其造型进行修改调整; 2、球和滑板的速度根据实际体验感调整移动距离; 3、开局说“go go go”是为了检验SIoT是否连接成功; 4、同一个角色内程序过多的话会影响同步的时效性; 5、此功能还可以做成聊天软件。 IoT物联网功能在结合硬件的使用中,功能会更加丰富、炫酷 对于初学者来说,做一个实时模式的联机游戏也是比较有成就感的 希望这篇帖子能够给更多老师一些教学的灵感 让创客的文化流行起来 不足之处,还请多多指教 (源程序代码见附件,欢迎体验) End |
24.05 KB, 下载次数: 5169
2.85 MB, 下载次数: 5197
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed