Advertisement

青少年编程Playgrounds之十五--While循环

阅读量:

青少年编程Playgrounds之十五–While循环

第三关 正确选取工具

在这里插入图片描述
在这里插入图片描述

鉴于此 Byte小朋友的行为模式已经被明确给出 我们只需完成相应的循环操作即可 如果选择while循环 则需要确定终止条件 通过细致分析 拖拽并旋转地图 我们会发现 使用for循环来限定执行次数是最直观的方式 但我们的目标一直都是具有挑战性的任务
基于给定的行为模式分析 当搜集到最后一颗宝石时 Byte将面临没有前进方向的情况 而在此之前 Byte总是能够找到前进的道路 因此 我们决定将终止条件设定为isBlock 并编写相应的代码

在这里插入图片描述
在这里插入图片描述

如果使用for循环,就直接根据宝石数量作为循环次数即可,则

复制代码
    func turnAndCollectGem() {
    moveForward()
    turnLeft()
    moveForward()
    collectGem()
    turnRight()
    }
    for _ in 0..<6{
    turnAndCollectGem()
    }

for循环有所不同,在此处跳过了变量i;这是因为整个循环过程中变量i并未参与运算操作;因此可以用_来代替它;当然也可以选择不省略。当采用Xcode进行编程时;如果在这里使用了变量i;系统将会发出警告提示指出:变量i根本没有被使用过;建议直接移除该变量以避免出现这样的警告信息

在这里插入图片描述

第四关 四乘以四

在这里插入图片描述
在这里插入图片描述

根据本关标题,我们知道答案是16—恭喜通关🎉

开个玩笑

观察地图后进行下一步操作。运行我的代码时需注意操作次数受情绪影响。
首先识别模式并确保与前一水平相似。移动三步并执行判定步骤后再进行操作步骤。
之后循环以上流程即可完成任务。

复制代码
    func moveAndCollect(){
    moveForward()
    moveForward()
    moveForward()
    if isOnClosedSwitch{
        toggleSwitch()
    }
    turnRight()
    }

下一步要考虑的是采用for循环而非while循环。对于这种编程模式来说,for循环最为简单直接,并且只需要四个控制变量依次执行四次即可完成基本功能。

复制代码
    for i in 0..<4{
    moveAndCollect()
    }

确实是变量i再次出现。
当程序运行速度较慢时,默认情况下可以直接启动快速调试模式。
也可以选择逐行调试或逐步调试。
接着会发现,
达不到我们的预期水平,
不如断点调试方便。
while循环方法

复制代码
    while !isBlocked{
    moveAndCollect()
    }
在这里插入图片描述

第五关 富饶之地

在这里插入图片描述
在这里插入图片描述

套用之前两关的模式,分析地图,可以把搜集两颗宝石作为一个模式,如

复制代码
    func collectTwoGems(){
    moveForward()
    collectGem()
    turnLeft()
    moveForward()
    collectGem()
    turnLeft()
    moveForward()
    turnRight()
    }

然后再细化一下,将重复部分变为一个函数

复制代码
    func moveAndCollect(){
    moveForward()
    collectGem()
    turnLeft()
    }

collectTwoGems函数变为

复制代码
    func collectTwoGems(){
    for i in 0..<2{
        moveAndCollect()
    }
    
    moveForward()
    turnRight()
    }

主函数呼之欲出

复制代码
    for i in 0..<4{
    
    collectTwoGems()
    
    }

其实在线游戏通关的方式多种多样;同样可以参考左右手定则法进行操作。需要注意的是,在后面的章节中会详细介绍右手法则的相关知识;因此目前不做深入探讨

在这里插入图片描述

本关任务完成。

全部评论 (0)

还没有任何评论哟~