做PlayGrounds隨機寶石遍布各處這關時,總想着用while循環一次搞定,但是沒有關鍵點和規律可找,一直鑽牛角尖,說明還是不能很好的貫通知識,最后還是用笨方法,一步一步寫,最后簡化代碼,發現規律,完成答題,感悟是:如果沒有思路就用一步一步去做題,沒有捷徑就勤奮點

let totalGems = randomNumberOfGems
var gem = 0
pinkPortal.isActive=false
bluePortal.isActive=false
func move(){moveForward();if isOnGem {collectGem()
gem+=1
}
}
func zhuanshen() {
turnLeft();turnLeft()
}
for i in 1 ... 2 {
if i==2{move()}
move()
move()
turnLeft()
move()
zhuanshen()
move()
move()
zhuanshen()
move()
turnLeft()
pinkPortal.isActive=true
bluePortal.isActive=true
move()
move()
move()
zhuanshen()
move()
pinkPortal.isActive=false
bluePortal.isActive=false
move()
move()
move()
zhuanshen()
move()
pinkPortal.isActive=true
move()
}用的for循環遍歷作出來的題,但缺點很明顯,不能做步數多的,也不符合算法的適用性,還需要在思考
let totalGems = randomNumberOfGems
var gem = 0
var y=0
func move(){moveForward();if isOnGem {collectGem();gem+=1}}
while gem<randomNumberOfGems{
if isBlocked{turnLeft();if isBlocked {turnLeft();y+=1;moveForward()}}
if y==2{if !isBlockedLeft || !isBlockedRight{turnLeft()};
y-=2;
pinkPortal.isActive=true
bluePortal.isActive=true
}
else {pinkPortal.isActive=false
bluePortal.isActive=false
}
move()
用while循環做出來了,多思考找到每一步要改變的獨有的特點,比如轉兩次要開起傳送門,當左邊/右邊無阻擋時轉彎,真的鍛煉思維
