......
......
......
......
......
......
自然生成的僵尸,有5%的概率生成出一只幼年僵尸。幼年僵尸不可被成年僵尸骑乘,因此当指令『/ride @e[type=zombie] summon_ride zombie』在目标选择器『@e[type=zombie]』只选择到一个僵尸的情况下生成出一只幼年僵尸时,指令将执行失败,返回的成功次数为0。
也就是说,上述指令有5%的概率执行失败。我们可以造一个命令模块验证一下这5%的概率:
(指令版本:基岩版1.19,未开启实验性功能)
A→B→C→D→E→F→G→
A[重][无][红]······ride @e[type=zombie,name=a] summon_ride zombie reassign_rides minecraft:entity_spawned
B[链][限][始]······scoreboard players add count test 1
C[链][无][始]······ride @e[type=zombie,name=a] stop_riding
D[链][无][始]······execute @e[type=zombie,name=a]~~~ kill @e[type=zombie,r=6,name=!a]
E[链][无][始]·······execute @e[type=zombie,name=a]~~~ kill @e[type=item]
F[链][无][始]·······scoreboard players add times test 1
G[链][无][始]······tp @e[type=zombie,name=a]-16 -60 0
\\图例\\
小主,
[重]重复;[无]无条件;[红]需要红石;[脉]脉冲;[限]有条件的;[始]始终活动;[链]连锁
\\使用到的计分项\\
test
\\使用到的变量\\
count(指令成功次数)、times(指令执行次数)
上面的模块会不断重复执行『ride @e[type=zombie,name=a] summon_ride zombie reassign_rides minecraft:entity_spawned』这条指令,并计算出指令的成功次数和执行次数。经过运行,加上一点儿人工计算,就可以得到以下数据:
执行1784次,成功1699次,差值85,失败概率约4.76%
执行次,成功9488次,差值512,失败概率约5.12%
可见,概率差不多就是5%。
为什么我要提这东西呢?
/ride作为一个使得玩家能够控制实体骑乘的指令,竟然能够因为这个特性而用于概率计算中,挺令人惊讶的是不是?但其实,不管是对于指令还是隔壁红石来说,能够巧妙运用游戏本身的特性,就是进阶玩家的基本要求。/ride只是一个例子,像这样的例子还有很多。特别是在基岩版,由于指令自由度没有Java版高,这迫使得许多基岩版的指令玩家大显神通,通过许多看起来十分取巧的方法实现许多看似不可能实现的功能,这边举几个例子:
①通过玩家攻击隐形盔甲架来实现点击牌子、点击村民NPC的效果
②通过tell指令能够使用目标选择器的特性,在tell指令中塞入大量的@e目标选择器并发送给指定玩家,来使得指定玩家游戏卡死以实现封禁的效果
③在Java1.13版本前,由于没有能够读取NBT数据的指令,因此当时普遍的方法是通过选取具有特定NBT标签值的实体并给予指定标签或分数,并使用穷举的方法来实现读取NBT数据的功能
④通过testforblocks指令比较命令方块,来实现检测物品和玩家名是否一致
所以,有时候当你想实现一个功能时却不知道怎么实现,不妨放开脑洞,想一想一些指令的特性,或许你就有了思路!
本章到此完全为止。