青少年编程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()
}
其实在线游戏通关的方式多种多样;同样可以参考左右手定则法进行操作。需要注意的是,在后面的章节中会详细介绍右手法则的相关知识;因此目前不做深入探讨

本关任务完成。
