スポンサーリンク
スポンサーリンク
解答例
while !isOnOpenSwitch {
moveForward()
if isOnGem {
collectGem()
turnRight()
moveForward()
collectGem()
} else if isOnClosedSwitch {
toggleSwitch()
turnLeft()
moveForward()
toggleSwitch()
}
while !isBlocked {
moveForward()
}
if !isBlockedRight {
turnRight()
} else {
turnLeft()
}
}
解説
いよいよ、コードを学ぼう1の最後の問題ですね。
宝石とスイッチが、2つずつかたまりで置かれていて
ゴールはonスイッチのところかな、とわかりますね。
この解答例では、全体を
while !isOnOpenSwitch {}
で囲み、『onスイッチ上でない限り』とします。
こうすると、onスイッチ上に来ると条件を外れ、ゴールになります。
あとはその中身ですが、『もし宝石上なら』宝石を取って右に進み、もうひとつ取る、
『そうではなく、もしoffスイッチ上なら』スイッチを切り替えて左に進み、またスイッチを切り替える、
とします。
あと、曲がり角の処理をwhileループで作ります。
この辺は、様々なやり方があると思います。
解答例その2
『もし宝石上なら宝石を取り、offスイッチ上なら切り替える』という関数を作ってやってみました。
曲がる場合の条件も、&&を使う事ができますね。
『もし前方が行き止まり、かつ、左も行き止まりなら』右折、
『前方だけが行き止まりなら』左折、
『それ以外なら』関数を実行し、前進します。
他にも例えば、『宝石上なら右折』なども条件にできそうですね。
色々試してみてください!
そして、次はいよいよ『コードを学ぼう2』に入ります。
一緒に頑張りましょう!!
でもだんだん難しくなるので、もし自信がなければ
もう一度『コードを学ぼう1』をやってみてもいいかと思います。
復習すると、記憶の定着がしっかりするのでおすすめです(⌒▽⌒)
func collectOrToggle() {
if isOnGem {
collectGem()
} else if isOnClosedSwitch {
toggleSwitch()
}
}
while !isOnOpenSwitch {
if isBlocked && isBlockedLeft {
turnRight()
} else if isBlocked {
turnLeft()
} else {
collectOrToggle()
moveForward()
}
}
要点まとめ
・自分の得意なコード以外も、積極的に使って作ってみよう
スポンサーリンク