本帖最后由 贰逼 于 2015-7-27 19:48 编辑

单模块关联
下一页为 执行值与循环
本章着重复习前面的内容,加深多个模块语句的概念和关联的概念。

所谓单模块是指多个模块语句组成的
和多模块不同,单模块内语句着重过程模块本身强调对象


单模块关联将会涉及到

执行值与条件语句

执行值与循环

执行值与时钟

全索引链接
上一篇(执行值与条件语句)--下一篇(执行值与时钟)


§7.2 执行值与循环
循环关联其他语句是指其他语句在循环外,而非循环的循环体
所以在本节内,是使用获取执行的值来构成循环,而非循环内获取执行值

上一章讲到了能够使用执行值来检测实体的数量,
在此,我们可以进一步规定选择器的范围,来检测玩家数量n,
并输出n个say 1


按照顺序执行:
  1. /scoreboard players set @e[name=f] a 0
  2. /stats entity @e[name=f] set AffectedEntities @e[name=f] a
  3. /execute @e[name=f] ~ ~ ~ testfor @a
复制代码

*获取玩家数量执行值
  1. /execute @e[name=f,score_a_min=2] ~ ~ ~ say 1
  2. /scoreboard players remove @e[name=f,score_a_min=1] a 1
复制代码

*循环

效果:



没有输出,这是因为输出条件中玩家大于两个


将其改成/execute @e[name=f,score_a_min=1] ~ ~ ~ say 1
不断输出,这是因为循环关联的stats不断更新,因此for循环1次被无限循环嵌套,最终得到无限循环

分析:
正如上面所说的,在循环模块中需要注意单次执行和多次执行的区别,(以后讲解单次执行的方法)
否则循环和决定循环的条件值都多次执行,循环就会被嵌套,如上得到了无限循环。
接着掺杂了一点时钟,因为循环条件修改条件,所以此处考虑先循环还是先执行循环体(这里明显需要先执行循环体)


不纠结单次执行和多次执行的问题,就目前关联语句来看,执行值与循环也的确有兼容性,只是要注意执行的问题。


附加部分

练习:
[groupid=546]Command Block Logic[/groupid]