関数 5. パターンをネストする

ネストとは入れ子のことです。本編から関数を呼び出し、その関数の中でさらに別の関数を呼び出す練習です。
どの単位で関数を作るかはあらかじめ指定されているので、それに従ってコードを組んでみましょう。

もちろん最後の部分はfor文で繰り返してもいいですね。

関数 4. 往復する

宝石が3行x3列の合計9つあるので、1列分をとる処理いを関数get3gems()とし、それを三回繰り返す形にしてみました。合間合間で方向転換を指示します。
もちろんこれ以外のやり方でもOKです。自分でパターンを見つけ出して関数にして使ってみましょう。

関数 2. 新しい関数を作る

前ステージで、turnLeft()を3回連続で使うと90°x3=270°回って結果的に右向きになれることがわかりましたが、それを毎回打つとコードが長くなって見づらくなってしまいます。
そこで登場するのがfuncコマンドです。あるコマンドのセットをパックにして名前を付けて、その名前をコマンドとして呼び出せば、セットの中身を連続して実行してくれるというものです。このセットのことを関数と呼びます。数学の言葉なのでやや馴染みづらいですが、英語のfunctionを訳したもので、コマンド名のfuncはそれを略したものです。
使い方は、

という感じです。関数の名前は自分で好きに決められます。その後に()をつけます(意味は追々わかります)。次に{を書いて最初の行は終わりです。次の行からセットで実行したいコマンドを順に書いていきます。何行でも構いません。そして最後のコマンドを書いたらもう一度改行して最後に}を書きます。{と}ではさまれた行がセット内容ということです。

ではさっそくfuncを使って、turnRight()とするとturnLeft()が3回連続で実行される関数を作り、それを使ってステージをクリアしてみましょう。

必須ではありませんが、{と}の間にある行は、先頭に空白を4つ入れて右にズラしておくと、コードを眺めた時にどこからどこが関数の内容なのか見やすくなります。アプリが自動でやってくれる場合もあります。

関数 1. 新しい挙動を作る

このステージでは右に曲がる必要が出てきます。しかし方向を変えるコマンドはturnLeft()しかないので、これをどうにかして利用して宝石のある方を向く必要があります。

こんな感じでできたでしょうか?
ちょっとめんどくさいですね、、ってとろこで次ステージへ続きます。

関数 3. 集めて、切り替えて、繰り返す

まず、このステージをバイト君がクリアする手順をじっくり考えましょう。四角形のステージでそれぞれの辺の中心辺りに宝石と閉スイッチが あるという法則が見えてくると思います。この共通部分を関数にするとしたら、

のような関数が作れるでしょうか。さらにその前後も毎回同じコマンドが連続してたりするかも知れません。ただしこのステージは正方形ではないので、短辺部分と長辺部分で少しだけ処理が違ってきます。宝石とスイッチの前後どこまでを関数に入れて、どの部分は本編部分で個別にコマンドを書くか見極めましょう。

例えばこんな解き方ができます。