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

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

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

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

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

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

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

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

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

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

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

コマンド 1. コマンドを使う

Swift Playgroundsでは、出題分の中に順をおって取り組むべき作業内容が具体的に示されています。ひとつひとつクリアしていきましょう。
途中3段の階段がありますがmoveForward()コマンドが勝手に上り下りしてくれるので数に数える必要はありません。つまり、宝石までは3歩と見なします。