循环语句与条件语句结合
下一页为 时钟概念
本章将前两章内容进行结合,
便是循环体中使用条件语句;
和条件语句中使用循环。
循环语句结合条件语句将会涉及到
循环中条件语句
时钟
- 建立时钟
- 时钟中条件语句
结束循环
跳过循环
循环嵌套
- 判断条件
- 终止循环
§5.2 时钟
下一页为 建立时钟
5.2.0 概念
5.2.0.1 基本概念
在上一篇中涉及到了时钟。
时钟究竟是什么,
其实是循环的一类,
它可以当作一个时钟:
时钟指:在循环体中含有时序输出的关联指令的循环。
时序就是循环体中指令(时钟称节点)必须拥有明确的先后关系。
指针:循环顺序,指向的指令得到信号;
次数:指针旋转次数;
节点:关联的指令;
循环:驱动时钟循环的核心。
在之前的例子里,出现了时钟,影响着输出与判断。
(再次可以粗略的理解时钟为顺序)
5.2.0.2 意义
做到时钟前提是有循环体中关联,
其二是时序。
由于循环就像指针划过的弧,只能朝着一个顺序,又像时间经过了一去不复返,
所以循环中无法做到节点间的跳转,让时钟在一次循环内跳跃,
所以这规定了循环的不可逆性,对于某些相互关联影响条件和输出的指令,只能采用时序。
时钟的影响:
之前的例子里提到了:
先有b=1才有输出,若将其放到后面,
时钟先指向了输出的节点,没有指向b=1,因此没有输出。
5.2.1 建立
下一页为 始终和条件语句
以下面几条指令:
复制代码
*建立五次循环,使用/scoreboard players set @p a 0开启
复制代码
*时钟节点1
复制代码
*时钟节点2
复制代码
*时钟输出
(1、2有关联)
若时钟节点2在1前面执行:
那么会有输出,因为时钟先得到b=0,最终为b=1,所以有。
若时钟节点1在2前面执行:
那么没有输出,因为时钟先得到b=1,最终为b=0。
同样是上面的时钟,将时钟节点1设为默认值。
只需要在节点2前面加上特殊条件条件:
复制代码
(c>=1)
注意:默认值时钟必须先指向默认值的节点,再指向特殊值。
输出:
全部还原默认,输出默认。
符合特殊,则输出特殊。
5.2.1 时钟中的条件语句
为上一篇的引申,讲解如何具体利用时钟
复制代码
*若玩家在f周围2格,设a为2。
复制代码
*a>=1输出
复制代码
*a--
这里构成了时钟,前后关联,保证a根据事件判定有无值。
效果:
站在两格以外无输出。
两格以内有输出(对比计分板,可以看到时钟对值的改变情况)
a:
复制代码
b:
复制代码
c:
复制代码
那么关系是a<b<c,
也就是说若条件都符合,优先选择c,其次b,最后a
效果:
利用时钟时序达到多条件同输出的不同等级关系。
- 普通时钟
以下面几条指令:
- /scoreboard players add @p[score_a=5] a 1
*建立五次循环,使用/scoreboard players set @p a 0开启
- /scoreboard players set @p b 1
*时钟节点1
- /scoreboard players set @p b 0
*时钟节点2
- /say @e[score_a=5,score_b_min=1]
*时钟输出
(1、2有关联)
若时钟节点2在1前面执行:
那么会有输出,因为时钟先得到b=0,最终为b=1,所以有。
若时钟节点1在2前面执行:
那么没有输出,因为时钟先得到b=1,最终为b=0。
- 默认值时钟
同样是上面的时钟,将时钟节点1设为默认值。
只需要在节点2前面加上特殊条件条件:
- /execute @p[score_c_min=1] ~ ~ ~ scoreboard players set @p b 0
(c>=1)
注意:默认值时钟必须先指向默认值的节点,再指向特殊值。
输出:
全部还原默认,输出默认。
符合特殊,则输出特殊。
附加部分
练习:
- 建立简易时钟,控制时钟输出/gamerule doDaylightCycle false;
- 建立默认时钟,默认输出为/weather clear;特殊输出为/weather thunder。
5.2.1 时钟中的条件语句
为上一篇的引申,讲解如何具体利用时钟
- 判断事件成立
- /execute @e[name=f] ~ ~ ~ /execute @p[r=2] ~ ~ ~ scoreboard players set @p a 2
*若玩家在f周围2格,设a为2。
- /execute @p[score_a_min=1] ~ ~ ~ say 1
*a>=1输出
- /scoreboard players remove @p[score_a_min=1] a 1
*a--
这里构成了时钟,前后关联,保证a根据事件判定有无值。
效果:
站在两格以外无输出。
两格以内有输出(对比计分板,可以看到时钟对值的改变情况)
- 时钟判定轻重关系
a:
- /execute @e[score_a_min=-1] ~ ~ ~ scoreboard players set @p b 1
b:
- /execute @e[score_a_min=1] ~ ~ ~ scoreboard players set @p b 2
c:
- /execute @e[score_a_min=10] ~ ~ ~ scoreboard players set @p b 3
那么关系是a<b<c,
也就是说若条件都符合,优先选择c,其次b,最后a
效果:
利用时钟时序达到多条件同输出的不同等级关系。
附加部分
练习:
- 判断玩家是否坐在矿车上,若非,输出say 1;
- 实现对于检测实体名为a,b,c的等级轻重关系,其中a>b>c。
[groupid=546]Command Block Logic[/groupid]