MacOS playground 47关 向左走 向右走 关卡思路

这一关真的是一言难尽,本以为遇到开关就可以转弯,没想到大意了,还是要跟之前一样分析什么时候需要往哪转。

经过分析,我们需要在循环体内先抓住宝石或处理完开关,再进行走路,否则如果先走路的话,因为上一步已经处理过了所在地的开关,就达到了开关已打开的条件,循环就不会再开始,小人就会待在原地,直到地球灭亡,宇宙消失。

其次,本关卡的转弯情况也需要一个一个分析,然后根据统计下来的情况寻找规律。(其实还是找规律)我把所有的情况列了一个图示:

由上图的结果推算条件,如果遇到前方可以走,不管左边右边是墙还是路,都只给一个向前走就可以;如果前方不能通行,一共会有4种情况,但是结果里面只有一种情况(左方不能走,右方可以走)是需要向右转的,那就在里面的循环体把这个情况单拎出来即可。于是代码如下:

func get(){//获取宝石或者打开井盖的方法

    if isOnGem{

        collectGem()

    }else if isOnClosedSwitch{

        toggleSwitch()

    }

}

while !isOnOpenSwitch{//不在开着的井盖上时

    get()//获取宝石或者打开井盖的方法

    if isBlocked{//前方受阻

        if !isBlockedRight && isBlockedLeft{//右边不受阻,并且左边受阻

            turnRight()//右转

        }

        else{//其他3种情况

            turnLeft()//左转

        }

    }

    moveForward()//前进一步

}

非常出色,跳一个舞然后进入下一个章节吧~

你可能感兴趣的:(MacOS playground 47关 向左走 向右走 关卡思路)