本帖最后由 贰逼 于 2015-7-13 09:08 编辑

条件语句
下一页为 条件嵌套概念
条件语句是模块中的一个重要指令
它用于判断事件是否成立
若成立则输出;
若不成立则跳过。


条件语句将会涉及到
execute
  • 条件与变量
  • 相对性

testfor

关于枚举多个条件输出

或|| 与 且&&
  • 或||
  • 且&&
  • 或且结合

!非的表达
  • !非 单个变量
  • !非 多个执行体

条件嵌套
  • 条件嵌套相对性
  • 条件嵌套与变量
  • 子条件detect


全索引链接
上一篇(!非的表达)--下一篇(循环基础)

§3.5 条件嵌套
下一页为 条件潜逃与相对性        3.5.0 基本概念
条件嵌套表示多重条件的从属关系
他的作用与相同

基本逻辑格式:
条件1:
  条件2:
    条件3:

    条件n→输出

指令基本格式:
/execute 选择器 相对坐标 /execute 选择器 相对坐标 /execute 选择器 相对坐标 …… 输出
*代表着多个条件同时存在↑
*简化↓
/execute 条件1 /execute 条件2 …… 输出

这正是利用execute指令末尾的command可以为任何指令,
所以原本的输出也可以替换成条件

因此可以理解条件嵌套就是且关系的嵌套
但是有后续的不同

        3.5.1 相对性
下一页为 条件潜逃与变量条件嵌套最大的不同就是相对性。

例如两个实体,f g间距1格



对比以下指令:
  1. /execute @e[name=f] ~ ~ ~ /execute @e[name=g,r=2] ~ ~ ~ say 1
复制代码
  1. /execute @e[name=g] ~ ~ ~ /execute @e[name=f,r=1] ~ ~ ~ say 1
复制代码
  1. /execute @e[name=g] ~ ~ ~ /execute @e[name=f,r=2] ~ ~ ~ say 1
复制代码

分别有以下输出







第一条指令相对g输出了,
是因为
1.g为最后的相对执行体;
2.相对f半径大于1,检测到了g。

第二条指令没输出
是因为
1.相对f半径等于1,不足以检测g。

第三条指令相对f输出了
是因为
1.f为最后相对执行体;
2.相对g半径大于1,检测到了f。


由上可得出标准结论
条件嵌套中,execute的相对执行
对于最后的执行体执行的;
而且在条件嵌套中更应当注重相对坐标


标准格式:
/execute 条件1 相对坐标 execute 条件2 相对坐标 …… execute 条件n 相对坐标
那么执行体为条件n,而不是条件1


        3.5.1 变量
下一页为 子条件detect
  • 与且相同
之前提到了条件嵌套有类似且的效果
我们可以进一步举例:

使用指令:
  1. /execute @e[name=f,score_a=1] ~ ~ ~ execute @e[name=g,score_a=1] ~ ~ ~ say 1
复制代码
得到了如下效果





如果f的a=1,g的a=2,
不符合条件,没输出



只有都为1,才能输出

这和且有着类似关系

  • 与且不同
不同的是:
将条件前后调换
  1. /execute @e[name=g,score_a=1] ~ ~ ~ execute @e[name=f,score_a=1] ~ ~ ~ say 1
复制代码



对比两个输出,发现相对执行体不一样,这和之前的相对性有着共同特点,
相对于最后的执行体执行的。


        3.5.1 detect
execute表示对于实体的条件
execute还有一个子条件:
detect
他是对于方块的条件

所谓子条件, 是因为它之前必须有execute
它在中出现过。

  • 具体用法




↑输出与不输出

这是基本用法
  1. /execute @e[name=f] ~ ~ ~ detect ~ ~-1 ~ wool 0
复制代码
表示相对f探测脚下(y-1)的方块。

detect基本格式就是:
  1. /execute 选择器 相对坐标 detect 相对坐标 方块名 数据值
复制代码
值得注意的是,detect只能探测相对实体y-1及以下的方块
可以理解为只能探测脚下及以下的方块。

  • 条件嵌套相对性


子条件同样可以连用条件嵌套
和execute相差无几。

比起基本格式中的输出,发现detect输出也有条件嵌套相对特点
相对的实体是最后出现的execute

  • 连用与且


detect依然能连用execute↑,表示的关系也是且
这方便了制作者检测方块(testforblock需要执行值,以后会讲到)
与相对性中的输出相同,但表达的意思不同;

相对性中的是相对g来检测方块,相对g输出;
而这里是相对f检测方块,也是相对g输出。

[groupid=546]Command Block Logic[/groupid]