コマンド 7. 最短の道順

宝石を1つ取り、スイッチを1つ操作するのが目標です。ワープも含め色々な道順が考えられると思います。いきなりコードを書き始めるのではなく、まず色々な道順を検討してみましょう。それぞれのルートを通った場合、moveForward()が必要な回数(=歩数)も考えてみて、もっとも少ないmoveForward()でクリアできるやり方を見つけ出しましょう。

以下は緑ワープを使って7歩でクリアできる例です。

青ワープを使っても7歩で行けますが向きを変える操作も数えるとどうでしょう?
一般的にはコードの行数がなるべく少なく済むやり方が効率的と考えられます。

コマンド 6. バグつぶしの練習

このステージも、あらかじめある程度出来上がっているコードを修正する練習です。
まずは最初から出ているコードで実行してみましょう。まっすぐ突き当たりにある最初からオンになっているスイッチ(開スイッチ)に向かってtoggleSwitch()でオフにしてしまいます。ではtoggleSwitch()行を消して、さらに高台にあるオフになっているスイッチ(閉スイッチ)まで誘導すればいいでしょうか?実はもう少しシンプルな直し方があります。ヒントは、開スイッチのところにはそもそも行く必要がない、ということです。
最終的に、2カ所で順序の入れ替えをすればクリアできるはずです。

もしこんがらがってわからなくなってしまった時は、一度最初からやり直すのも手です。右上にある「…」ボタンをタップし「ページをリセット」を選ぶと、そのステージの最初の状態に戻せますよ(そのステージで書いたコードをは消えます)。

コマンド 4. ワープの練習

ワープという仕掛けが登場します。ワープは同じ色同士の1組のワープゾーンがあり、片方の上に乗るともう片方に瞬間移動します。ワープゾーンに入った時の向きそのままで出口に出現します。またワープの移動分は歩数としてカウントされません。ワープゾーンが自動で移動してくれたのであって、バイト君達が自分で歩いて進んだのではないからです。

さて、解き方ですが、下のように部分部分で区切りを決め、実行して結果を確かめながら進めるとやりやすいと思います。繰り返しになりますが、//ではじまる緑色の行(コメント行)は書き写さなくて大丈夫です。

コマンド 3. スイッチを切り替える

ちょっと手数が多いのでこんがらがってしまうかも知れませんが、前ステージ同様、途中通過点(サブゴール)を自分で区切って、文字通り一歩ずつコードを組み上げていきましょう。
コマンドがあまりたくさん並ぶと、どれがどの操作と対応付くのか見通しが悪くなって混乱します。その場合、改行ボタン(右下の右から2番目のボタン)で何も書いて無い行(空行)を区切りとして入れておいてもOKです。
またアプリの中では説明されていないちょっとした裏技ですが行の先頭にスラッシュを2つ(//)書くと、その行全体は無視されコードの実行には影響しなくなります。文字が緑色の部分はあってもなくてもコードの実行結果はかわりません。
これを利用して下記のように処理内容をメモとして残しておくのに使えます。当サイトでは以後、なるべく「ここはこういう処理をしています」という注釈をこの形で入れていくので参考にしてください。実際にアプリに書き写す時には書いても書かなくても問題ありません。

コマンド 2. 新しいコマンドを追加する

前ステージで使ったmoveForward()(1歩前進する)とcollectGem()(頭上の宝石を取る)に加え、turnLeft()(左を向く)というコマンドが増えます。向きを変えるだけで位置は動かないことに注意してください。
コマンドには必ず最後に()がついてますが、今はあまり気にしなくて大丈夫です。()がついていたらひとつの作業を指示するコマンドだと考えましょう。

Swift Playgroundsではコード(ある目的のためにコマンドを並べたもの=プログラム)の途中でも実行して試してみることができます。全て一度に完成させようと思わず、「まずは曲がり角まで」、それができたら「宝石のあるところまでいって取る」など自分で途中通過点を決めて、段階を追って完成させていくのが良いでしょう。