MacOS playground 46关 左转还是右转 关卡思路
2020-11-29 本文已影响0人
毛线帽1894
这一关我认为比前两关的判断条件简单,因为画面不是随机生成的,是固定的,所以我们可以通过分析每一个井盖的位置和四周特点找不同~
如图我们可以看出,一共六个井盖,固定条件是遇到井盖便左转或右转。但是向左还是向右,这是一个问题。
经过分析,6个井盖和对应的特点如下:
1.前面无阻碍 →(右转)
2.前面有阻碍 ←(左转)
3.前面有阻碍 ←(左转)
4.前面无阻碍 →(右转)
5.前面有阻碍 ←(左转)
6.前面有阻碍 ←(左转)
正好可以把前方有无阻碍和转的方向对应起来,无需其他条件(我真是个小机灵鬼),然后有了这一个条件就好办了许多,不用分成更多情况了。代码就随之得出:
func step(){
if !isOnClosedSwitch {//不在井盖时
moveForward()//前进一步
}else{//在井盖时
toggleSwitch()//打开井盖
if !isBlocked{//前方无阻碍
turnRight()//右转
}else{//前方有阻碍
turnLeft()//左转
}
}
}
while !isOnGem {//不在宝石上时
step()//开启上述轮回
}
collectGem() //看到宝石时,抓住它!