Swift Playgrounds

コードを学ぼう2【決まった位置に置く】解答例と解説

決まった位置に置く

解答例

let expert = Expert()
world.place(expert, atColumn: 2, row: 6)

for i in 1 ... 2 {
  expert.turnLeft()
  expert.turnLockUp()
  expert.turnLeft()
  expert.turnLeft()
  expert.moveForward()
  expert.collectGem()
  expert.turnLeft()
  expert.turnLeft()
  expert.moveForward()
  expert.turnRight()
  expert.move(distance: 5)
}

expert.moveForward()
expert.collectGem()

解説

place(配置)メソッドを使えるようになりました。
これにより、エキスパートを好きな位置に配置して始めることができます。
画面の一番手前の方の川の上をクリックしてみてください。
0, 0』と表示されますね。
これは、column(列)と、row(行)の座標をあらわします。
最初の0が列の0列目、次の0が、行の0行目となります。
大切なことは、最初が『1』ではなくて『0』から始まる点です。
普段の生活では、1から数えることが多いと思いますが、
プログラミングではゼロが最初だったりすることがあるので注意です。

このステージそのものは、GridWorld型でできており、
そのインスタンスであるworldのplaceメソッドを使います。

world.place(item: Item, atColumn: Int, row: Int)

この形は今後、何度も出てきますよ。

要点まとめ

・座標を代入することで、エキスパートの場所を決めて配置することができる

解答例その2

let expert = Expert()
world.place(expert, atColumn: 2, row: 6)

func turnAround() {
  expert.turnLeft()
  expert.turnLeft()
}

func turnLockCollectGem() {
  expert.turnLeft()
  expert.turnLockUp()
  turnAround()
  expert.moveForward()
  expert.collectGem()
  turnAround()
  expert.moveForward()
  expert.turnRight()
}

turnLockCollectGem()
expert.move(distance: 5)
turnLockCollectGem()
expert.move(distance: 6)
expert.collectGem()