【MCBE-指令类】二分法求坐标简化版教程
大家好鸭~ 我是一只萌新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内就可以算完坐标的命令组。
思路:
先在持有posy标签的玩家处生成一个名为posy的盔甲架
将名为posy的盔甲架传送到"~ 0 ~"的位置
判断玩家是否位于Y轴的负半轴或Y=0的位置(判定目标位于负半轴使用dy来解决,例如execute @a[tag=posy] ~~~execute @s[y=-256,dy=255] ~~~tag @s add posy_small)
若玩家位于负半轴,则将名为posy的盔甲架传送到"~ -256 ~"的位置
以盔甲架作为原点,建立局部坐标系,检测玩家是否位于该坐标系的Y轴正方向的256~256格范围内。若是,则将盔甲架向Y轴正方向传送256格并赋予相应分数
以盔甲架作为原点,建立局部坐标系,检测玩家是否位于该坐标系的Y轴正方向的128~256格范围内。若是,则将盔甲架向Y轴正方向传送128格并赋予相应分数
以盔甲架作为原点,建立局部坐标系,检测玩家是否位于该坐标系的Y轴正方向的64~127格范围内。若是,则将盔甲架向Y轴正方向传送64格并赋予相应分数
~8-n.以盔甲架作为原点,建立局部坐标系,检测玩家是否位于该坐标系的Y轴正方向的2~3格范围内。若是,则将盔甲架向Y轴正方向传送2格并赋予相应分数
以盔甲架作为原点,建立局部坐标系,检测玩家是否位于该坐标系的Y轴正方向的1~1格范围内。若是,则将盔甲架向Y轴正方向传送1格并赋予相应分数
现在求出了最开始盔甲架到玩家的Y轴距离(若玩家位于正半轴,则算出的是"0至玩家"的距离。若位于负半轴,则是"-256至玩家"的距离),那么现在需要对所求得的分数进行修正:若玩家位于Y=0的位置,则直接将分数设为0。若玩家位于负半轴,则用负半轴最大求取范围(-256)加上所求得的分数,则为Y=0到玩家的距离(如"图-01")。

11.击杀名为posy的盔甲架,含有标签posy的玩家的posy标签
那么就结束了~这里贴出一张成品图(样例图,如"图-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
那么该教程就结束了~
如有任何问题敬请提出哦!一定不要白嫖!