ワープゾーンや階段に惑わされがちですが、実際のコースは「真っ直ぐ進んで突き当たったら右に曲がる」というシンプルなものです。宝石がある場所を実質のゴールとして考えてよいでしょう。途中に閉スイッチと開スイッチが混在しているので、逐一調べて閉スイッチの場合のみtoggleSwitchで操作しましょう。
まずはスイッチはおいといて、目標の宝石まで到達するナビゲーション部分を作ります。前ステージのwhileループのネスト(入れ子)を思い出してください。
宝石まで到達できるようになったら、あとは各マスごとに「閉スイッチがあったら開ける」という条件処理を追加します。どこに入れたら良いでしょう?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
//ゴールまで進む外ループ while !isOnGem { //曲がり角まで進む内ループ while !isBlocked { moveForward() //スイッチ処理 if isOnClosedSwitch { toggleSwitch() } } //内ループが終わったら実行される turnRight() } //最後の宝石を取るのを忘れずに。 collectGem() |
最後で処理がループして困っていたことろにこのサイト。
とても参考になり、理解の助けになりました(^^)