青少年编程Playgrounds之十六–While循环
第六关 富饶之地
数次点击 运行我的代码 可以发现平台长度会变化,宝石及开关数量,开关状态也会发生变化。但是找模式依然管用。
如果要使用for循环作为最外层循环的话,根据地图变化情况,那Byte每次最好解决单一问题,即开关列–宝石列–开关列
func finishOneRow(){
while !isBlocked{
moveForward()
if isOnGem{
collectGem()
}else if isOnClosedSwitch{
toggleSwitch()
}
}
}
因为编程的时候,我把地图横向变化了,所以编程finishOneRow,而不是Colomn,很任性的。
不管怎么变化,只要没有被阻拦,前进–搜集或切换
然后是处理如果遇到阻拦的时候怎么办?
针对本关地图的情况,因为只有三条路径,所以当第一次前方遇到阻碍时,左手方向也不能移动,所以选择右转,第二次遇到阻碍时,左手方向可以移动,所以选择左转
func changeTheDirction(){
if isBlockedLeft{
turnRight()
moveForward()
turnRight()
}else {
turnLeft()
moveForward()
turnLeft()
}
}
重复三次即可
for i in 0..<3{
finishOneRow()
changeTheDirction()
}