スポンサーリンク
スポンサーリンク
解答例
let totalGems = randomNumberOfGems
var gemCounter = 0
while gemCounter < totalGems {
if isOnGem {
collectGem()
gemCounter += 1
}
if isBlocked {
if isBlockedLeft && isBlockedRight {
turnRight()
turnRight()
} else if isBlockedLeft {
turnRight()
} else {
turnLeft()
}
}
moveForward()
}
解説
最初からlet totalGems = randomNumberOfGems
という定数が設置してあります。
これでランダムな数(1〜12)が何なのか、わかるようになっています。
なぜそんな事ができるのかは、、深く考えず、とにかく今は定数の練習だと思って取り組みましょう。
もう何度か『<』の形が出てきたので、慣れてきたと思います。
変数(var)でgemCounterを定義し、『+=』(複合代入演算子)で1を追加していくんでしたね。
whileループで、定数で決められた数になるまでifで調べながら繰り返します。
曲がり方のコードは、多種多様なやり方があり、人それぞれです。
今回は3種類の曲がり角があったので、まずifで行き止まりを大きく囲み
①右も左も行き止まりの場合は、右折を2回
②左が行き止まりの場合は、右折
③それ以外は、左折
としました。
以下のようなやり方もあります。
色々試してみてくださいね。
let totalGems = randomNumberOfGems
var gemCounter = 0
while gemCounter < totalGems {
if isOnGem {
collectGem()
gemCounter += 1
}
if isBlocked {
turnRight()
if isBlocked {
turnLeft()
turnLeft()
if isBlocked {
turnLeft()
}
}
}
moveForward()
}
要点まとめ
・比較演算子について、しっかり復習しておこう
スポンサーリンク