コウです、よろしくお願いします!
「ゼロからプログラミングを始める」人に役立つ情報を発信しています。
今回はDay75「ワープを作る」です。どうぞ!!
解答例
まずは解答例を確認しましょう。
コードは次のようになります。
2行目の『緑色の四角』には本来画像のようなものが入りますが、コピーするとテキストになってしまいます。
この先のステージにも出てきますが、『○○色の四角』はこれを表していますのでご了承ください。
解答例を動画で確認する
上記のコードを実行した結果がこちらになります。
ステージ攻略「ワープを作る」
ステージを攻略していきましょう!
クリア条件
今回のクリア条件は、『宝石を8つ取る』ことです。
もう一度ステージを確認しましょう。
同じ形(3×3)の島が2つあります。
それぞれ宝石の配置も一緒です。
関数を定義すれば使い回すことができそうですね。
まず最初にいる島で宝石を4つ集めてから、もうひとつの島にワープして残り4つの宝石を取るという流れで進めていきます。
関数を定義
まずは関数を定義しましょう。
「宝石を取る→1マス進む→左を向く→1マス進む→後ろを向く」
これを繰り返すと宝石が取れるのがわかるでしょうか。
ここまでをforループに入れて3回繰り返します。
func getGem() {
for i in 1 … 3 {
collectGem()
moveForward()
turnLeft()
moveForward()
turnRight()
turnRight()
}
collectGem()
}
最後の宝石のマスでループが終わるので、
宝石を取ってあげれば4つ全て取ることができます。
ワープを設置する
今回から新たにワープを設置できるようになりました。
ワープもブロックと同じように、
定数として宣言してから使っていきます。
ブロックの置き方の復習は↓から。
let greenPortal = Portal(color: 『緑色の四角』)
まずは『Portal型』を定数として宣言します。
ここでBlock型と少し違うのは、色を指定することです。
今回はもともと緑色が指定されていますが、
四角いところをクリックすれば自分で好きな色を指定することができます。
名前と同じ色にするようにすればわかりやすいですね!
world.place(greenPortal, atStartColumn: 1, startRow: 5, atEndColumn: 5, endRow: 0)
そして、
『world.place(portal: Portal, atStartColumn: Int, startRow: Int, atEndColumn: Int, endRow: Int)』
を使ってワープを設置していきます。
portal: Portal
ここには定義したPortal型が入ります。
今回は『greenPortal』でしたね。
座標の指定
ワープは入り口と出口があります。
そこで、『Start(入り口)』と『End(出口)』を
それぞれ指定してあげる必要があります。
『Int』には整数が入ります。
atStartColumn: Int, startRow: Int
下の左側の画像が入り口を置きたい場所の座標です。
(1,5)となっているのでそのままの順番で入力しましょう。
atEndColumn: Int, endRow: Int
今度は右側の画像を見てください。
こちらが出口を置きたい場所の座標です。
(5,0)をそのまま入力します。
ワープを設置した後はそのワープに入って、
定義した関数を使えば宝石を集め切ることができます
まとめ:ワープを作る
ワープを作るタイミングや作る場所が重要になりますね!
それによってホッパーの動きも変わってきます。
今回のポイントを振り返りましょう。
- ワープを設置することもできる。
- ワープの場合には色を指定する。また、『Start(入り口)』と『End(出口)』の2箇所を指定する必要がある。
次回はDay76「階段を置く」でお会いしましょう!それでは!!