メソッドは関数と似ていますが、
1 |
expert.moveForward() |
のように特定のオブジェクト(インスタンスなど)に向かって出すコマンドのことです。メソッドにも()がついてましたが、そこに規定の引数をもたせることができます。
このステージでは、world(世界)というオブジェクトに対してplaceというメソッドを使い、好きなキャラクターの位置や向きを移動させます。今まではlet文で用意するだけでいい感じの場所に勝手に配置してくれましたが、ここからはそれも自分で指定しなければなりません。
placeメソッドはworldの設計図にあらかじめ書き込まれているので、自分でfunc文で用意する必要はありません。アプリの出題文にあるように、
1 |
world.place(expert, atColumn: 2, row: 6) |
などとします。最初のexpertは動かしたい対象、atColumnとrowはコマを指定する為の列番号と行番号です。マップ上の好きなコマをタップすると「(3,0)」のように2つの数字が表示されます。これらをこの順番でatColumnとrowのところに入れてやればOKです。連続2回続けての処理なので関数にしなくてもfor文で繰り返すのが早いでしょう。
ステージのルートとしては、赤いスイッチと宝石の間を基点とすると、「宝石を取り、スイッチを操作し、道を5マス進む」を2回繰り返すとよさそうです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
//expertインスタンスを準備 let expert = Expert() //worldに対し、expertの位置移動を指示する world.place(expert, atColumn: 2, row: 6) //ここからが本番 for i in 1 ... 2 { expert.turnRight() expert.moveForward() expert.collectGem() expert.turnLeft() expert.turnLeft() expert.moveForward() expert.turnLock(up: true, numberOfTimes: 1) expert.turnRight() expert.move(distance: 5) } expert.moveForward() expert.collectGem() |
せっかく瞬間移動を習得したのに、瞬間移動で宝石を集めようか😎
world.place(expert, atColumn: 1, row: 1)
expert.collectGem()
world.place(expert, atColumn: 1, row: 6)
expert.collectGem()
world.place(expert, atColumn: 6, row: 1)
expert.collectGem()
ちょうど6年前に同じこと考えている人がいた