Swift Playgrounds

コードを学ぼう2【川を渡る】解答例と解説

川を渡る

解答例

let expert = Expert()
world.place(expert, facing: .south, atColumn: 1, row: 8)

func collectGemsInLine() {
  while !expert.isBlocked {
    if expert.isOnGem {
        expert.collectGem()
    }
    expert.moveForward()
  }
}

collectGemsInLine()
expert.turnLockDown()
expert.turnLeft()
collectGemsInLine()
expert.turnLockUp()
expert.turnRight()
collectGemsInLine()

解説

placeメソッドに、向きを指定できるfacing:が加わりました。
以下は同じ型により決められた項目の一つで、これらを『列挙』といいます。

向きが決められるので、さらに便利ですね。

.north (北)
.east (東)
.south (南)
.west (西)

いつものように、まずはエキスパートを初期化します。
worldインスタンスで場所などの詳細を設定し、配置。
コードを全部書く前に一度実行してみて、方向が合っているか確認してみましょう。
関数で、『行き止まりまで、もし宝石があれば取って進む』を作れば、あとは簡単ですね。

要点まとめ

・placeメソッドで、向きを示す引数を指定することができる