ブロックは同じ座標に配置すると、上へ積み上がっていきます。今回はそれを利用して道を平らにして通れるようにする必要があります。手前から3本の脇道があり、それぞれに、2つ、1つ、2つのブロック、計5つを配置します。
ルートとして、高低差があるものの「2つ進み、右に曲がり、突き当たりの宝石を取り、戻る」を3回繰り返せばいけそうです。これを設問文の指示通り、ループと関数で書いてみます。名前を考えるのが面倒でpattern1としてしまいました、、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
//2つ進み、スイッチを入れ、右に曲がって突き当たりの宝石を取って戻る関数 func pattern1() { move(distance: 2) toggleSwitch() turnRight() move(distance: 4) collectGem() turnRight() turnRight() move(distance: 4) turnRight() } //5つのブロックをまとめて準備 let block1 = Block() let block2 = Block() let block3 = Block() let block4 = Block() let block5 = Block() //ぞれぞれの箇所に配置。指定しているブロックインスタンスが全て違う点に注意。 world.place(block1, atColumn: 2, row: 2) world.place(block2, atColumn: 2, row: 2) world.place(block3, atColumn: 4, row: 2) world.place(block4, atColumn: 6, row: 2) world.place(block5, atColumn: 6, row: 2) //キャラクターの移動開始。 for i in 1 ... 3 { pattern1() } |