スポンサーリンク
スポンサーリンク
解答例
func turnAndMove3() {
turnRight()
moveForward()
moveForward()
moveForward()
}
func solveRightSide() {
collectGem()
turnAndMove3()
turnLeft()
moveForward()
collectGem()
turnLeft()
turnLeft()
moveForward()
turnAndMove3()
turnRight()
}
for i in 1 ... 5 {
moveForward()
if isOnGem {
solveRightSide()
} else if isOnClosedSwitch {
toggleSwitch()
turnLeft()
moveForward()
collectGem()
turnLeft()
turnLeft()
moveForward()
turnLeft()
}
}
解説
画像を見ると、少し角度が悪くてどのようになっているのかよく分かりません。
なので、クリックしたまま左右に動かし、何コマ進めばいいのか確認してみましょう。
それから、何度か実行してみると、この課題ではスイッチや宝石はランダムではないようです。
全体的に見て、5歩進めばゴール。
その内、宝石がある場合は、右側の宝石を取ってくるコード、
切れたスイッチがある場合は、左にある宝石を取ってくるコードを作ればいいですね。
まずは関数で、右側を処理するsolveRightSide()
を作ります。
あとは、前進を5回繰り返し、『もし宝石があれば』右側の宝石を取ってくるコード(solveRightSide()
)、
『宝石はないがoffスイッチの上にいる場合』は、スイッチをonして左側の宝石を取ってくるコードを作ります。
ちなみに、関数で作った、右側を処理する中に宝石が出てきますが、
その中の宝石の上に来たからと言って、またsolveRightSide()
が作用する訳ではありません。
要点まとめ
・どのような状態にいるのかで、条件分岐することができる
スポンサーリンク