[MCBE]你学了数字转化了吗? #5
1.什么是数字转化
数字转化指将某个不能直接读取但能够通过选择器区间的方法检测的量(例如坐标,经验,视角)转换为计分板分数或其他量,或者反向转换。
例如:检测垂直视角,读取写入坐标等
本期教程主要讲解了三种数字转化的方法
2.数字转化的方法
2.1.穷举法
顾名思义,列举出所有可能性进行检测,即如果玩家垂直旋转视角为90至-90度,那么把视角90度的玩家分数设90,89度的设89,以此类推。
但是穷举法检测范围较大的量时往往需要极大量的命令方块,因此主要适用于情况较少时
2.2.递归法
递归法,利用一组重复的命令方块,像小孩子数数一样,一个一个数,不断重复执行当检测量大于最小值时,将检测量-1并且计分板+1。这样到了最后,原来检测量就等于计分板分数。
递归法用的命令方块数量较少,但是计算较大量时游戏卡顿,出结果耗时长,对于需要精确控制时间或者数字较大的量不适用(例如坐标)
补充:另外有人可能会想到多个递归堆叠以节约时间,经作者实测这样误差极大,不可行。
2.3.二分法
二分法利用任何数都可以被分解为1或2的次方的数相加的原理,例如85可以被分解为64+16+4+1(2^6+2^4+2^2+1),所以我们可以让检测量与以上数字对比,如果数字大于检测量则选择下一个较小的数字,如果数字小于或等于检测量则让检测量减去数字并选择下一个。
例如玩家的等级是85级,先比对256(一般情况下经验等级不会大于等于这个数的2倍),很显然85小于256,检测下一个
128:85小于128,下一个
64:85大于64,让85减去64(此时玩家经验等级为21),计分板上加64(此时计分板为64),然后下一个
32:21小于32,下一个
16:21大于16,让21减去16(此时为5),计分板加16(80),下一个
8:5小于8,下一个
4:5大于4,让5减4(1),计分板+4(84),下一个
2:1小于2,下一个
1:1(检测量)等于1(数字),让1-1(0),计分板+1(85)。
此时所有分数对比完成,检测量为0,计分板为原来的检测量。
二分法适用于读写较大的量,它可以在1t以内读取或写入完成。不过对于较小量更建议递归,因为二分法读个7都要6cb,递归2cb延迟也才7t,2cb它不香吗?
最后,感谢仓鼠为我们带来命令培优系列。

