⭐✔️
本帖最后由 贰逼 于 2015-7-24 22:30 编辑

循环语句与条件语句结合
下一页为 时钟概念
本章将前两章内容进行结合,
便是循环体中使用条件语句;
和条件语句中使用循环。

循环语句结合条件语句将会涉及到
循环中条件语句

时钟
结束循环

跳过循环

循环嵌套
全索引链接
上一篇(循环语句与条件语句结合)--下一篇(结束循环)

2021.12 数据,可能有更多内容循环语句与条件语句结合下一页为 时钟概念本章将前两章内容进行结合,便是循环体中使用条件语句;和条件语句中使用循环。
循环语句结合条件语句将会涉及到循环中条件语句
时钟
  • 建立时钟
  • 时钟中条件语句
结束循环
跳过循环
循环嵌套
  • 判断条件
  • 终止循环
全索引链接
上一篇(循环语句与条件语句结合)--下一篇(结束循环)
§5.2 时钟
下一页为 建立时钟
  5.2.0 概念
    5.2.0.1 基本概念
在上一篇中涉及到了时钟。


时钟究竟是什么,
其实是循环的一类,
它可以当作一个时钟





时钟指:在循环体中含有时序输出的关联指令的循环
时序就是循环体中指令(时钟称节点)必须拥有明确的先后关系


指针:循环顺序,指向的指令得到信号;
次数:指针旋转次数;
节点:关联的指令;
循环:驱动时钟循环的核心。


在之前的例子里,出现了时钟,影响着输出与判断。
(再次可以粗略的理解时钟为顺序


    5.2.0.2 意义做到时钟前提是有循环体中关联
其二是时序。由于循环就像指针划过的弧,只能朝着一个顺序,又像时间经过了一去不复返,所以循环中无法做到节点间的跳转,让时钟在一次循环内跳跃,所以这规定了循环的不可逆性,对于某些相互关联影响条件和输出的指令,只能采用时序。


时钟的影响:之前的例子里提到了:先有b=1才有输出,若将其放到后面,时钟先指向了输出的节点,没有指向b=1,因此没有输出。

  5.2.1 建立下一页为 始终和条件语句
  • 普通时钟
构建时钟首先要关联,接着是顺序


以下面几条指令:

代码:

  1. /scoreboard players add @p[score_a=5] a 1

*建立五次循环,使用/scoreboard players set @p a 0开启

代码:

  1. /scoreboard players set @p b 1

*时钟节点1

代码:

  1. /scoreboard players set @p b 0

*时钟节点2

代码:

  1. /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前面加上特殊条件条件:

代码:

  1. /execute @p[score_c_min=1] ~ ~ ~ scoreboard players set @p b 0

(c>=1)


注意:默认值时钟必须先指向默认值的节点,再指向特殊值


输出:




全部还原默认,输出默认。



符合特殊,则输出特殊。



附加部分
练习:
  • 建立简易时钟,控制时钟输出/gamerule doDaylightCycle false;
  • 建立默认时钟,默认输出为/weather clear;特殊输出为/weather thunder。

  5.2.1 时钟中的条件语句
为上一篇的引申,讲解如何具体利用时钟
  • 判断事件成立
使用以下指令:(无特殊规定此处是无限循环)



代码:

  1. /execute @e[name=f] ~ ~ ~ /execute @p[r=2] ~ ~ ~ scoreboard players set @p a 2

*若玩家在f周围2格,设a为2。

代码:

  1. /execute @p[score_a_min=1] ~ ~ ~ say 1

*a>=1输出

代码:

  1. /scoreboard players remove @p[score_a_min=1] a 1

*a--


这里构成了时钟,前后关联,保证a根据事件判定有无值


效果:




站在两格以外无输出。



两格以内有输出(对比计分板,可以看到时钟对值的改变情况)


  • 时钟判定轻重关系
依次执行以下指令:
a:

代码:

  1. /execute @e[score_a_min=-1] ~ ~ ~ scoreboard players set @p b 1

b:

代码:

  1. /execute @e[score_a_min=1] ~ ~ ~ scoreboard players set @p b 2

c:

代码:

  1. /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。


额无语
学习了~~~~

lzs1234
/execute @e[score_a,score_a_min=10] ~ ~ ~ scoreboard players set @p b 3
选择器参数score_a后面为什么没有分数