初期化 4. 力を合わせて

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

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

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

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

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

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

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

初期化 1.エキスパートを初期化する

いままで、ステージに動かすキャラクターは一人(一匹?)だけだったので、moveForward()やturnLeft()などはドット表記で誰に対する指示かを示す必要はありませんでした。ただこれはプログラミングとしては本当は不完全で、ここからはより本格的な文法にそって、キャラクターのインスタンスも明示してドット記法で指示することになります。正直、Swift Playgroundsの入力操作でこれを徹底するのはかなり面倒くさいですが、先々キャラクターも複数になってきたりするので致し方ありません…

また前ステージまではbluePortalやpinkPortalなどのインスタンスが最初から用意されていましたが、これも本当に自分でプログラミングする時は逐一用意が必要です。これが初期化です。いままでも変数を

などとして用意(宣言)しましたが、それと同じことです。

はExpert()(先頭が大文字で()がついてることに注意)という設計図(クラス)に沿って、expert(先頭小文字で()無し)というインスタンスを作成(初期化)しなさい、ということです。
var(変数)ではなくlet(定数)として作成するのは、expertという名前はプログラム終了まで同じインスタンス(個体)のことを指してかわらないよ、という事です。
初期化が無事完了すれば、いままでどおりmoveForward()やturnLeft()といった命令を与えられるようになります。ただし今後はドット記法を使って、

とセットで書く必要があります。いくつもの命令を連続して書くのはウンザリしがちですが仕方ありません。もうちょっとアプリの反応がサクサクしてるといいんですけどね…

それ以外は今までのステージとかわりません。ナビゲーション周りについては、3歩連続で進む場面が多いので、今回もmove3()という名前で関数を作りました。関数の中でexpert.moveForward()と命令相手を明記しているので、move3()自体はexpert.move3()などとドット表記にする必要は(当面は)ありません。
続いて、中心にあるスタート地点から三方向に同じ距離だけいったところに宝石があるので、これを取ってスタート地点に戻ってくるというのをひとかたまりの処理として関数getGem()を作りました。
そして一方向だけ途中道が途切れていて渡れないところがあります。ここは残り1方向を進んだところにあるスイッチを操作して床板を浮上させる必要があります。ここはmove3()を活用しつつ個別に処理をしました。

余談ですが、いまいちインスタンスの初期化のイメージがわかないという人は、たい焼きとその型をイメージしてみましょう。Taiyaki()という型にたい焼きの形状があらかじめ彫り込んであります。これを使って実際に使える(食べられる)たい焼きを作るのが、

という記述になります。実際にはたくさんのたい焼きを作るので、区別ができるよう名前を変えていきます。

のように番号を振ってもいいし、

と丁寧に名前をつけても構いません。
このステージの

の左辺のexpertは、一体しか使わないことがわかっているので手抜きでそのまんまexpertとしてるので、型/設計図であるExpert()とかぶってわかりづらいのです。
さて、型であり設計図であるTaiyaki()には、「たい焼きにはあんこが入っているもので、その種類も選べる」という決まりも書き込まれていたとします。これは出来上がった個々のたい焼きがぞれぞれもつ個性(プロパティ)であり、

などと指定できるかも知れません。
あるいは、

とかして命令を出せたりして?これらは設計図(クラス)であるTaiyaki()で予め決まっています。それを元に量産された個体がインスタンスです。