コウです、よろしくお願いします!
「ゼロからプログラミングを始める」人に役立つ情報を発信しています。
今回はDay77「島を渡る」です。どうぞ!!

解答例
まずは解答例を確認しましょう。
コードは次のようになります。

解答例を動画で確認する
上記のコードを実行した結果がこちらになります。
ステージ攻略「島を渡る」
ステージを攻略していきましょう!

クリア条件
今回のクリア条件は、『宝石を3つ集めて、スイッチを6つ切り替える』ことです。
ステージの詳細を確認しましょう。

今回はキャラクターも設置することになります。
どこに置くかはポイントですね。
あとは、島が3つあってそのそれぞれに宝石とスイッチがあります。
島をどのように渡るのかもポイントです。
関数を定義
まずは関数を定義することから考えました。

それぞれの島には『宝石が1つ、スイッチが2つ』あります。
さらによく見ると、2×2の四角の中にスイッチが対角にあって、残りの1マスに宝石があるのがわかるでしょうか。
これは全ての島で共通していますね。
1マスは何も無いので、ここからホッパーを動かすと考えます。
反時計回りに進めると、
「1マスジャンプ→スイッチを切り替える→左を向く→1マスジャンプ→宝石を取る→左を向く→1マスジャンプ→スイッチを切り替える」
これで3箇所全て解決することができますね!
ではホッパーとブロックとワープを
どこに設置するかを考えましょう。
ホッパーを配置する
まずはホッパーを配置します。
let Hopper = Character()
で初期化したうえで、
world.place(Hopper, atColumn: 1, row: 2)
で配置をします。

(1,2)はこの位置です。
特に向きを指定しなくても右側のスイッチの方を向いていて反時計回りに進めるので、定義した関数が使えます。
ブロックを配置する
今度はブロックを配置します。
奥の島に渡りたいのでその間にブロックを置きたいのですが、
クリックして座標を確かめることができません。
しかし、座標は闇雲に設定されている訳ではないので、
その周りを確かめればクリックしなくてもわかります。
例えば今回の場合は次の画像を見てください。


もといた島の端の座標は(2,3)(3,3)です。
渡りたい島の座標は(5,3)(6,3)ですね。
( )の左側の数字に注目してください。
『2』『3』『5』『6』ですね。
1から数字を数えていくと、3と5の間には何が入るでしょうか。
『4』ですよね。
座標の数字も1から順に並んでいるので、
この間の座標は(4,3)になります。
world.place(Block(), atColumn: 4, row: 3)
前回は『Stair』の初期化と配置を同時に行えました。
『Block』も同じように同時にできるので使っていきましょう。
前回の記事はこちら↓

ワープを配置する
最後にワープを配置します。

ワープを置きたい座標は画像のように(5,5)(2,7)です。
ワープでも初期化と配置を同時に行いました。
色は何色でも大丈夫です。
ホッパー・ブロック・ワープが配置できました。
それぞれの島の2×2マスの空いているマスに
ホッパーを導いてあげて、
関数を使ってステージをクリアしましょう!
まとめ:島を渡る
今回のポイントを振り返りましょう。
- 座標は周りを確かめれば自分で見つけることができる。
- ブロックやワープでも初期化と設置を同時に行うことができる。
次回はDay78「ループを作る」でお会いしましょう!それでは!!
