11053| 29
|
[教程] 如何在mind+里做一个可以和朋友在不同局域网进行联机的程序 |
本帖最后由 哎,就是玩 于 2022-1-29 15:39 编辑 相信不少人都玩过元气骑士吧。 就在近年,元气骑士推出了远程联机(测试版)模式 那么我们能否在mind+里面设计一个类似的游戏并实现联机呢?答案是肯定的。 那么 mind+这样一个单人的编程软件如何做到远程联机? 这就需要MQTT消息了,我用的是easy lot,网址是https://iot.dfrobot.com.cn/index.html 各位想用 阿里云或者其他的也是可以的,原理不变 注册好了之后呢就要设置服务器参数了(不要关闭网址,待会还有用) 在mind+里面添加扩展,依照上图 然后从网络服务里面找到MQTT初始化连接 可以看到我们需要设置三个数据(我标记为A,B,C) 回到Easy lot 官网点击工作间 然后点击加号添加两个新设备名为(x坐标,y坐标(这个是用来好区分的,没啥实际意义)) 然后将两个设备底下那一串字母粘贴到刚刚初始化MQTT参数的那个“C”位置(见上图) 然后将这两个码分别粘贴(lot id 粘贴到A,lot pwd 粘贴到B)(点击小眼睛可查看,直接复制也行) 这样做之后我们就完成了最基本的设置 接下来,正片开始 首先创建3个角色,两个人物,(随意人物),一个按钮 在两个角色头上加上自己和队友的标识,方便辨认(不加也行能看出来就可以) 然后切换到自己的那个角色,开始编程 首先是万年不变的行走 别问为啥这么复杂,问就是贼丝滑。(嫌费事可以弄简单点也没事) 接下来重点来了(也是难点建议多看几遍) 创建两个变量,分别为本机代码和对方机代码 这个是怎么个用法和干啥的,一会会解释 然后就是循环执行,将x坐标发送到topic0也就是我们刚刚在Easylot里创建的设备x坐标 将y坐标发送到topic1也就是设备y坐标 这时候重点来了,为什么要加本机机号,这是为了区分自己和你联机的人发送的消息 由于这个消息的特性,你自己发的消息也会再次被接收一次,那么 如果双方都在发x坐标,y坐标,怎么分清楚是谁发的? 那不就乱了吗 所以要加上本机代码加以区分 至于这个发送的消息怎么被解析,后面会讲。 接下来转到角色“按钮”进行编程 把刚刚设置好的那个MQTT初始化参数模块复制到这里来, 按照图示进行编程注意,正在进行连接一定要单独放置, 否则会先提示正在连接再发起连接,(这样费时间) 然后设置本机代码为随机数那个模块,设置的随机数要在100到999之间 为的是让代码固定为3位数(方便后面进行解析) 然后提问请输入对方机代码, 这时候输入的对方机代码是为了后面对接收的消息进行解析用的(很重要) 类似于房间号码 下面转到“队友”角色进行编程 这块有点小复杂,可能会看不懂,多看几遍就好 这个就是解析代码,他的作用就是判断是否是你联机的对象发来的消息 并且将x、y坐标同步成为对方的x、y坐标 上面那个程序是x坐标,下面那个是y坐标,这个不多做解释了 可以看到条件是截取MQTT消息从1--3个字符, 这个就是截取了我们刚刚设置的对方机的代码(这也就是为什么一定要固定双方代码的位数了) 解析完毕后判断,如果等于设置的对方机代码,那么这条消息就是联机的人发过来的, 那么这个时候就可以将MQTT消息截取从第4--倒数第1个字符了(也就是截取出了发送的坐标) 下面y坐标的程序也是这样设置就可以。 到这里主干就做完了。 这时候我们可以做个试验,把对方机代码设置为本机代码, 这时候相当于你在和自己联机,如果发现角色“自己”与角色“队友” 保持一致,那么恭喜你,你成功了 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed