// 變數初始設定
let switchCounter = numberOfSwitches
var gems = 0
// 如果寶石比開關數少就繼續走
while gems < switchCounter {
walkAlongLeft {
if isOnGem {
collectGem()
gems += 1
}
}
}
// ⭐️ 貼著右邊走的策略,
// 將來可以寫入 Actor 的 extension 中。
func walkAlongRight(handle:()->Void) {
// 如果右邊沒擋住,就向右轉、走一步,然後做該做的事
if !isBlockedRight {
turnRight()
moveForward()
handle()
}
// 不然如果前面沒擋住,就向前走一步,然後做該做的事
else if !isBlocked {
moveForward()
handle()
}
// 不然就向左轉
else {
turnLeft()
}
}
func walkAlongLeft(handle:()->Void) {
if !isBlockedLeft { // 如果左邊沒擋住,就向左轉走一步,然後做該做的事
turnLeft()
moveForward()
handle()
} else if !isBlocked { // 不然如果前面沒擋住,就向前走一步,然後做該做的事
moveForward()
handle()
} else { // 不然就向左轉
turnRight()
}
}