Minecraft(我的世界)中文论坛

标题: [CBL∫2b]指令方块进阶教程——模块 §5 : 循环中条件语句 [打印本页]

作者: ⭐✔️    时间: 2015-7-16 20:20
标题: [CBL∫2b]指令方块进阶教程——模块 §5 : 循环中条件语句
本帖最后由 贰逼 于 2015-7-23 16:05 编辑

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

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

时钟
结束循环

跳过循环

循环嵌套
全索引链接
上一篇(for循环模拟机械赋值 )--下一篇(时钟)

§5.1 循环中条件语句


        5.1.0 区别
虽然循环自身也是条件语句,但是与循环区别的是,
此处条件语句在循环体之中。

如果说循环是一层条件,那么这里条件属于嵌套条件。

循环与条件语句结构:
进一步分析:
/scoreboard players add @p[score_a=5] a 1
/execute @p[score_a=5] ~ ~ ~ say 1
/execute @p[score_a=5] ~ ~ ~ /execute @p[score_b_min=1] ~ ~ ~ say 2

构成了一个循环,
(使用/scoreboard players set @p a 1设定初值开始循环5次)
其中:
/scoreboard players add @p[score_a=5] a 1
为循环基础,维持循环进行。

/execute @p[score_a=5] ~ ~ ~
为循环体基础判定,后缀则是循环中的输出。

say 1
/execute @p[score_b_min=1] ~ ~ ~
都是循环中输出,但是say 1直接输出,而后者则又是一个条件判断,

say 2
是循环中/execute @p[score_b_min=1] ~ ~ ~ 条件判断的输出。

↑得到循环中的结构关系。(如果在第四章没弄懂的此处可以理解)



        5.1.1 输出关系


使用上面的指令。

显然循环中此条件语句只有条件满足才有输出,而且输出次数与循环和循环体操作有关:



当我预设b为1,那么会一直输出。


在最后新增一个指令方块:
  1. /execute @p[score_a_min=3] ~ ~ ~ scoreboard players set @p b 1
复制代码

那么在执行第3次时,将b设为1,那么就会有输出。
(构成简易时钟,关于具体是什么,咱么下篇讲解)
既然是循环,和顺序不可能托不上关系。

在上面的例子里,我们在最末加入,也就是最后执行,显然已经过了输出say 2的时辰。所以后来设b为1,没有本轮say 2的输出
从第四次循环开始,才有say 2输出

然而:



  1. /execute @p[score_a_min=3] ~ ~ ~ scoreboard players set @p b 1
复制代码

放在
/execute @p[score_a=5] ~ ~ ~ /execute @p[score_b_min=1] ~ ~ ~ say 2


那么从第三次循环就有输出了。
这就是顺序的重要性,他影响时序和输出,若操作不当可能会造成延误


附加部分
前面花了十分多的笔墨来着重描述条件语句和循环语句作用,本章作为实践章也需要自己动手了

练习:
  • 建立一个循环20次的高频,当循环15次后一直输出say 1;
  • 自己实践循环和条件语句,结合教程。

[groupid=546]Command Block Logic[/groupid]
作者: ACE.ACE.ACE    时间: 2015-7-16 20:22
支持技术贴
作者: chyx    时间: 2015-7-16 20:23
本帖最后由 chyx 于 2015-7-16 20:25 编辑

想知道跳出循环有什么简单方法 像break
我现在为了避免执行之后的部分要在后面的部分每个前面都加execute帽子

作者: 小白~别喷。    时间: 2015-7-16 20:42
支持LZ的教程贴
作者: 凛    时间: 2015-7-16 20:45
红石大触你好
我是红石小白
作者: cowb    时间: 2015-7-16 21:41
2b大大的作品,不明觉厉!




欢迎光临 Minecraft(我的世界)中文论坛 (https://www.mcbbs.net/) Powered by Discuz! X3.5