欢迎光临散文网 会员登陆 & 注册

【MCBE-指令类】二分法求坐标简化版教程

2020-07-01 23:46 作者:Happy2018new  | 我要投稿

大家好鸭~ 我是一只萌新UP主,这是我的第一份专栏(最近不打算做视频),望各位看官们三连啊!

这是一篇关于MCBE的二分法求坐标的简化版算法的教程。与Yangzii_大佬的算法相比,本篇教程中的算法命令数量更少,这也就是"简化版"的意义所在。本篇教程还会穿插其他求坐标算法,请各位命令师们根据实际情况进行选择哦~

[注] 

1.本专栏仅提供算法,不提供指令。所以需要白嫖的玩家请自行退出~

2.本教程有使用以下资料作为参考,如有侵权,请联系我删除。
①基于记分板的服务器系统部署 - 系列教程 我的世界Minecraft【BE】基岩版
https://www.bilibili.com/video/BV1Ft411e7CT?p=7

②【MCBE命令方块】告别堆叠?不用函数?如何在命令方块链里套娃

https://www.bilibili.com/video/BV1e5411t7rV


Ⅰ.二分法求坐标简化版(我称之为"渐进二分法")

本内容中以求Y轴坐标为例进行讲解(Y轴坐标求取范围为-256~256)

前置条件:当玩家拥有标签posy时,开始计算其Y轴坐标。

前置原理:

任意整数均可以被拆分为2的次方的形式。例如23=16+4+2+1,998=512+256+128+64+32+4+2,337=256+64+16+1

那么我们就可以根据这个制作一个在1tcik内就可以算完坐标的命令组。

思路:

  1. 先在持有posy标签的玩家处生成一个名为posy的盔甲架

  2. 将名为posy的盔甲架传送到"~ 0 ~"的位置

  3. 判断玩家是否位于Y轴的负半轴或Y=0的位置(判定目标位于负半轴使用dy来解决,例如execute @a[tag=posy] ~~~execute @s[y=-256,dy=255] ~~~tag @s add posy_small)

  4. 若玩家位于负半轴,则将名为posy的盔甲架传送到"~ -256 ~"的位置

  5. 以盔甲架作为原点,建立局部坐标系,检测玩家是否位于该坐标系的Y轴正方向的256~256格范围内。若是,则将盔甲架向Y轴正方向传送256格并赋予相应分数

  6. 以盔甲架作为原点,建立局部坐标系,检测玩家是否位于该坐标系的Y轴正方向的128~256格范围内。若是,则将盔甲架向Y轴正方向传送128格并赋予相应分数

  7. 以盔甲架作为原点,建立局部坐标系,检测玩家是否位于该坐标系的Y轴正方向的64~127格范围内。若是,则将盔甲架向Y轴正方向传送64格并赋予相应分数

  8. ~8-n.以盔甲架作为原点,建立局部坐标系,检测玩家是否位于该坐标系的Y轴正方向的2~3格范围内。若是,则将盔甲架向Y轴正方向传送2格并赋予相应分数

  9. 以盔甲架作为原点,建立局部坐标系,检测玩家是否位于该坐标系的Y轴正方向的1~1格范围内。若是,则将盔甲架向Y轴正方向传送1格并赋予相应分数

  10. 现在求出了最开始盔甲架到玩家的Y轴距离(若玩家位于正半轴,则算出的是"0至玩家"的距离。若位于负半轴,则是"-256至玩家"的距离),那么现在需要对所求得的分数进行修正:若玩家位于Y=0的位置,则直接将分数设为0。若玩家位于负半轴,则用负半轴最大求取范围(-256)加上所求得的分数,则为Y=0到玩家的距离(如"图-01")。

图-01

11.击杀名为posy的盔甲架,含有标签posy的玩家的posy标签

那么就结束了~这里贴出一张成品图(样例图,如"图-02"所示)

图-02

[注:"图-02"需要玩家拥有标签"want_posy"才会计算,支持多人游戏。执行方式和顺序与mcfuncation的执行方式和顺序相同]

结论:本算法使用了34条命令。而与Yangzii_的算法(41条)比较,简化了7条指令。计算的范围越大,简化的数量就越明显。

P.S.这里多个execute不会造成卡顿,最终都只执行1次

Ⅱ.渐进法

思路:方法Ⅰ是本方法的进阶版本。本方法利用的数据拆分方式是:

377=300+70+7,3888=3000+800+80+8,9273=9000+200+70+3

P.S.因此这种方法也可以根据方法Ⅰ进行改版,但这种方法与二分法相比,命令会更多。求取的范围越大,该方法所需的命令数量相比二分法所需的命令数量将会越多。

Ⅲ.渐递法

思路:通过方法Ⅱ进行改版。套用递归即可大幅度减少命令数量。

拆分方式:

388=100+100+100+50+10+10+5+1+1或100+100+100+100x8+1x8

END

那么该教程就结束了~

如有任何问题敬请提出哦!一定不要白嫖!

【MCBE-指令类】二分法求坐标简化版教程的评论 (共 条)

分享到微博请遵守国家法律