所有分类
主题 主题
平台 平台
我的工作台
userHead
注册时间 [[userInfo.create_time]]
创造力 [[userInfo.creativity]]
[[userInfo.remark]]
[[d.project_title]]
articleThumb
[[d.material_name]]
timelineThumb
进入工作台
折叠
所有分类 我的工作台
展开
此帖,让mind+不再“单机”
Storm 2019-09-09 14:53:05
4
0
简单

本帖最后由 Storm 于 2019-8-30 09:54 编辑

大家好。今天给大家分享一个mind+联机项目游戏,可以双人联机玩转mind+(不是一台电脑两人玩哦!)。

      鉴于之前和同事出差打乒乓球的灵感。我用mind+做了一个可以联机的类似于乒乓球的游戏。我们先来一个视频压压惊。



    【游戏说明】两台主机通过mind+实时模式中MQTT模块进行连接(此模块类似与“广播”功能)。30s的时间,进行对抗赛,分差为A-B的得分,大于0,A获胜;小于0,B获胜。当球打到对方的背景色时加一分。两个画面实时同步。

      熟悉mind+或scratch等图形化编程软件的老师应该知道,实时模式一般给我们的印象都是“单机游戏”,只能在一台电脑上玩。那作为一个经历过红警、冰封王座等局域网游戏的“叔叔”,也想把mind+做成一个联机游戏。于是就开始了胆大心细的尝试。

projectImage



       这个项目是在我学习mind+官网上SIoT本地物联网物联网内容时想到的。那接下来就要开始进行讲解了。

      在阅读下面内容之前,务必先学习mind+官网中SIoT本地物联网中的内容。(http://mc.dfrobot.com.cn/thread-281102-1-1.html
     或下载学习附件中的“mind+物联网实施模式无硬件”文件
以上是官方教程,实时模式无硬件介绍到此为止。接下来就是对此项目讲解环节。

projectImage

      首先我们来mind+里面的几个模块

projectImage


      通过以上官方教程的指导。我们可以进行一个小结:      1、mind+可以通过程序将文本、数字等信号发送到SIoT网页端,并储存;      2、SIoT网页端可以向mind+发送特定的指令,当mind+收到特定指令时,可以执行自定义编写的程序;     【思考】(我学习时内心的独白)      1、既然SIoT网页端可以向连接相同网络和地址的mind+发送指令,是否可以发出一条指令后,两个主机上的mind+同时接收到相同的指令?      2、是否可以A主机mind+发送消息→SIoT网页端→B主机mind+接收信息→执行程序?      3、“MQTT”模块,是否相当于一个可以跨越主机的“广播”模块?      答案是  YES!     【注意】[attach]80721[/attach]MQTT模块只有5个通道,意思是只能发送5个不同类别的“广播”。

联机弹弹球游戏开始设计思路
确定整个游戏所需要的角色:滑板A、滑板B、球。(背景在背景库中选择后,手绘加上两个底色即可)      A主机-A滑板      1、实现效果:A主机控制滑板A,B主机的滑板A和A主机同步。      2、程序示例:

projectImage

      3、程序说明:此处选择的是Topic_0通道,发送特定的指令(up&down)。       A主机-B滑板      1、实现效果:受B主机控制,同步进行。      2、程序示例:

projectImage

       3、程序说明:此处还是选择Topic_0通道,发送的特定指令(up1&down1)区分A滑板的指令。      A主机-球      1、实现效果:点击绿旗时,球从中间顶点向下随机方向准备。点击球时发射。碰到边缘反弹;碰到滑板向对面随机角度反弹;碰到对方底色得分。      2、程序示例:

projectImage
projectImage
projectImage
projectImage

       3、程序说明:         图一,设置初始值,且球的初始方向同步(通过变量储存数据,发送到Topic_1)。注意在MQTT初始化参数*这个部分要添加多个通道。

projectImage

         图二,是接到图一后面的程序,通过一个通道让双方计分并显示的分数同步。         图三,由主机A点击小球,两边同时开始游戏并开始计时。控制小球碰到滑板A和滑板B时,通过两个通道(Topic_2、Topic_3)反弹效果同步。         图四,同步计时并公布比赛结果。(此程序也可以放在前面任意两个角色中)

      B主机-A滑板      1、实现效果:受A主机控制,在B主机同步。      2、程序示例:

projectImage

      3、程序说明:程序和A主机的程序是相对应的。注意数据要一致。      B主机-B滑板      1、实现效果:由B主机控制,设置初始值,同步A主机。      2、程序示例:

projectImage

       3、程序说明:此处连接了本地SIoT。      B主机-球      1、实现效果:和A主机同步运行      2、程序示例:

projectImage
projectImage

      3、程序说明:和A主机小球的程序相对应。Tips1、滑板的尺寸需要点击其造型进行修改调整;2、球和滑板的速度根据实际体验感调整移动距离;3、开局说“go go go”是为了检验SIoT是否连接成功;4、同一个角色内程序过多的话会影响同步的时效性;5、此功能还可以做成聊天软件。

IoT物联网功能在结合硬件的使用中,功能会更加丰富、炫酷对于初学者来说,做一个实时模式的联机游戏也是比较有成就感的希望这篇帖子能够给更多老师一些教学的灵感让创客的文化流行起来不足之处,还请多多指教(源程序代码见附件,欢迎体验)
End

Makelog作者原创文章,未经授权禁止转载。
4
0
评论
[[c.user_name]] [[c.create_time]]
[[c.parent_comment.count]]
[[c.comment_content]]