スポンサーリンク
スポンサーリンク
解答例
world.place(Stair(), facing: south, atColumn: 3, row: 1)
world.place(Stair(), facing: south, atColumn: 3, row: 3)
world.place(Stair(), facing: west, atColumn: 1, row: 4)
world.place(Stair(), facing: west, atColumn: 1, row: 6)
world.place(Stair(), facing: east, atColumn: 5, row: 6)
world.place(Stair(), facing: north, atColumn: 2, row: 7)
world.place(Stair(), facing: north, atColumn: 4, row: 7)
func toggleSide() {
while !isBlocked {
toggleSwitch()
moveForward()
}
toggleSwitch()
}
func turnCorner() {
turnRight()
move(distance: 2)
turnLeft()
move(distance: 2)
turnRight()
}
move(distance: 4)
turnLeft()
move(distance: 3)
turnRight()
for i in 1 ... 2 {
toggleSide()
turnCorner()
}
toggleSide()
解説
前回、ブロックを置くときにはまず最初に、インスタンスの初期化をしてからworldに設置しました。
それを、初期化とともに一度に設置します。
インスタンスの名前をつけずに、Stairという型を使うことにより、
一行で済みますね。
階段などの場合は、それぞれ挙動があるわけでもなく設置するだけなので、
別にそれぞれの名前がなくても大丈夫ですよね。
『型』を書く場合は、最初が大文字で最後に『()』が必要になります。
要点まとめ
・ショートカットを使えば、インスタンスの初期化と配置を同時に行うことができる
解答例その2
world.place(Stair(), facing: south, atColumn: 3, row: 1)
world.place(Stair(), facing: south, atColumn: 3, row: 3)
world.place(Stair(), facing: west, atColumn: 1, row: 5)
world.place(Stair(), facing: east, atColumn: 5, row: 5)
world.place(Stair(), facing: north, atColumn: 3, row: 7)
func toggle3() {
move(distance: 3)
turnRight()
move(distance: 3)
toggleSwitch()
turnRight()
moveForward()
toggleSwitch()
turnRight()
turnRight()
move(distance: 2)
toggleSwitch()
turnRight()
turnRight()
moveForward()
turnRight()
}
move(distance: 2)
for i in 1 ... 3 {
toggle3()
}
スポンサーリンク