パラメータ 2. 関数を作る

ひとつの関数に引数を2つ以上もたせることも出来ます。

てなもんです。
今回はturnLockという関数に、upとnumberOfTimesという2つの変数をぶらさげます。upはBool型とあります。Bool型はtrueかfalseのどちらかが入るんでした。upがtrueだったら移動板が上がり、falseなら下がるように関数を作るというお題です。またnumberOftimesはその上げ下げ作業をする回数です(Int型なので数字が入ります)。例えば、

としたら、板を上げる処理を3回分する、という動作にするわけです。
(upという変数名はちょっとわかりにくいかも知れません。今までのルールだと、isUp(upかどうか)という名前で考えた方がピンとくるでしょうか?)

ちなみに、自分で用意した関数を呼び出す時、その対象として、先頭に「expert.」をつけるべきかどうか気になった方もいるかも知れません。現状ではつけてもつけなくても動作は同じみたいです。一方、関数の中ではexpert.をつけないとエラーになりますし、そっちで対象を指定しているので、関数全体としては不要と考えれば良いでしょう。turnLeft()はつけるのにturnLock()はつけない、というのが気持ち悪い、という方もいるかも知れないですが、手間が減るしつけない方をオススメします。たぶん正式なSwiftの文法としてもそれが正しいはずです。

パラメータ 1.もっと遠くまで進む

ついに引数の導入です。
関数は決まった処理をあちこちで何度も実行させるのには便利ですが、ほんのちょっとだけ動きを変えたい時があります。ほぼ同じ内容なんだけど、曲がる向きが右なものと左なものでそれぞれの関数を作って使い分ける、というのは非効率です。そんな時の為に、関数呼び出し時に追加指示を加えるのが引数(パラメータ)です。
関数の呼び出しは伝書鳩を飛ばすようなものだと思ってください。鳩は自分の名前のついた巣(func)へ飛んで行き、funcの番人は鳩が飛んできたのを合図に決められた仕事を開始します。引数は鳩の足にメッセージを結んで飛ばすようなものです。番人は単に鳩が飛んできたという合図だけでなく、足にくくりつけられた伝言をみて、仕事の内容を調整するのです。
今まで私の回答例で何度か、

なんて関数を作ってきました。番人は鳩が飛んできたら機械的に一律「3歩進む」という仕事をします。しかしもし2歩や4歩のバージョンも必要になったらどうでしょう?いちいちmove2()やmove4()を作るのでしょうか?それぞれに番人を雇ってたら人件費が大変ですね(笑)。
そんな時に活躍するのがまさにこの引数です。番人に「歩数は毎回伝言で伝えるから、それにあわせて調整してくれ」と約束事を決めるわけです。

のように関数を作っておきます。関数名の後ろにいつも謎の()がついてましたが、ついに中身が入ったわけです。distance(距離)という名前でInt(整数値)を()の中に書けるよ、と宣言しています。そして、for文の繰り返し回数を書いてるところにもdistanceと書かれています。
そして呼び出す時はこう。

こうすると、呼び出す時に指定した5という数字が、実際に関数の中身が実行される時、distanceと書いたところにかわりに入ってくれます。なので、

ならfor文は2回繰り返されますし、

なら4回になります。数字違いのfunc文をたくさん書かなくてよくなるわけです。番人は一人で済みます!

さて、これを踏まえて回答例です。

なお今回は距離を指定する因数ということでdistanceという言葉を使っていますが、ここは単なる変数の名前なので、その変数の使い道を表したわかりやすいものを使えばOKです。

初期化 4. 力を合わせて

前ステージ同様、expert君、characterちゃんの二人を個別に操作していきます。

同じ命令が繰り返しになっている部分は関数にまとめる余地があるかも知れませんよ?

初期化 3. 違う型のインスタンスを使う

いよいよステージ上に複数のキャラクター(characterとexpert)を登場させて使い分ける必要が出てきます。
expert君はExpert()、characterちゃんはCharacter()とそれぞれ違う型から生まれたインスタンスなので、それぞれできることが違います。鍵を操作して移動式の床板を浮かべたり沈めたりできるのはExpert()型の能力を与えられたexpert君のみです。
expert君のcharacterちゃんのどちらに対する指示なのかをドット記法ではっきりさせながらコードを書いていきます。
関数を作る必要もないようなシンプルなステージなので、二人への呼び分けをじっくり練習しましょう。

初期化 2. エキスパートを育てる

ここでもexpertインスタンスを自分で初期化し、ドット記法で命令を与えていく点以外はいままでと変わりません。
ドット記法は面倒くさいので、関数や繰り返しを上手く使って、なるべく短い行数で済むよう知恵を絞りましょう。

こうしてみると、turnLeftを2回連続で行って振り返る箇所がちらほらありますね。ここも関数にしてみたらどうでしょう?