这一关真的是一言难尽,本以为遇到开关就可以转弯,没想到大意了,还是要跟之前一样分析什么时候需要往哪转。
经过分析,我们需要在循环体内先抓住宝石或处理完开关,再进行走路,否则如果先走路的话,因为上一步已经处理过了所在地的开关,就达到了开关已打开的条件,循环就不会再开始,小人就会待在原地,直到地球灭亡,宇宙消失。
其次,本关卡的转弯情况也需要一个一个分析,然后根据统计下来的情况寻找规律。(其实还是找规律)我把所有的情况列了一个图示:
由上图的结果推算条件,如果遇到前方可以走,不管左边右边是墙还是路,都只给一个向前走就可以;如果前方不能通行,一共会有4种情况,但是结果里面只有一种情况(左方不能走,右方可以走)是需要向右转的,那就在里面的循环体把这个情况单拎出来即可。于是代码如下:
func get(){//获取宝石或者打开井盖的方法
if isOnGem{
collectGem()
}else if isOnClosedSwitch{
toggleSwitch()
}
}
while !isOnOpenSwitch{//不在开着的井盖上时
get()//获取宝石或者打开井盖的方法
if isBlocked{//前方受阻
if !isBlockedRight && isBlockedLeft{//右边不受阻,并且左边受阻
turnRight()//右转
}
else{//其他3种情况
turnLeft()//左转
}
}
moveForward()//前进一步
}
非常出色,跳一个舞然后进入下一个章节吧~
网友评论