この章ではステージ自体に手を加えることができるようになります。まず最初のステージでは途切れている道をつないで通行可能にします。
作業は
1. ブロック型のインスタンスを作成する
2. 作成したインスタンスを指定の場所に設置する
の2ステップが必要です。
コードにすると
1 2 |
let block = Block() //blockという名前でBlock型のインスタンスを作る world.place(block, atColumn: 0, row: 0) //作ったインスタンスblockを座標(0,0)の位置に設置する |
となります。
少しおさらいするとインスタンスはある決まった性質をもった型から作られた実体です。ひとつの型からたくさんのインスタンスを作ることができます。たい焼きの型を使ってつくる実際のたい焼きひとつひとつがインスタンスと言えます。今までにも、ExpertやCharacterといった型で個人であるexくんやchちゃんを作ってきたのと同じです。
さて、ブロック自身には移動能力がないようで、
1 |
block.moveForward() |
などのようにして移動を指示することができません。
かわりにworldという世界のインスタンスに対して、.place()というコマンドで特定のインスタンスを特定の場所に置きます。placeとは「場所」という意味の英語ですが、動詞では「置く」という意味にもなりますね。world.place()というドット表記は「worldに対して、置くという指示を出す」ということになります。そして具体的に指示するには、「なにを」と「どこに」を決めてあげる必要があり、これを()の中にパラメータとしてくっつけてやります。場所の指定は今までと同じく座標を使います。Block型の場合、向きは気にしなくて良いので、パラメーターにも含める必要はありません。
ステージで反対端の閉スイッチまで行くには、途中どうしても渡れない切れ目があります。ここにブロックを置いてやれば良いわけです。置きたい場所をタップすると座標が(3,3)と出ますので、これを使います。
道さえつながってしまえばあとはそう難しいステージではないでしょう。
1 2 3 4 5 6 7 8 9 10 11 |
let block = Block() world.place(block, atColumn: 3, row: 3) move(distance: 2) turnLeft() move(distance: 3) turnRight() move(distance: 3) turnLeft() move(distance: 2) toggleSwitch() |