Swift Playgrounds

コードを学ぼう2【2つのエキスパート】解答例と解説

2つのエキスパート

解答例

let topExpert = Expert()
let bottomExpert = Expert()

world.place(topExpert, facing: north, atColumn: 0, row: 4)
world.place(bottomExpert, facing: east, atColumn: 0, row: 0)

bottomExpert.collectGem()
bottomExpert.move(distance: 3)
bottomExpert.turnLeft()
bottomExpert.turnLock(up: true, numberOfTimes: 2)
bottomExpert.turnRight()
topExpert.turnLockDown()
bottomExpert.move(distance: 3)
bottomExpert.turnLock(up: false, numberOfTimes: 2)
topExpert.turnRight()

while !topExpert.isBlocked {
  if topExpert.isOnGem {
    topExpert.collectGem()
  }
  topExpert.moveForward()
}

解説

同じ型で作られた、二人のエキスパートが協力しあってゴールします。
エキスパートの『』ですが、クッキーの型のように
その型を使えば同じものがいくつでも出来上がります。
今回は、topExpert(上のエキスパート)と、bottomExpert(下のエキスパート)という名前をつけてあります。

なるべくコードを短くするために、どこに最初に配置するのか
どっちを向いて始めればいいのか、よく見る必要があります。
移動や鍵を回す時パラメータを使えば、だいぶわかりやすく、短く書くことができますね。

上のエキスパートがいる場所に出てくる宝石はランダムなので、
whileループで『行き止まりまで、もし宝石があれば取って進む』とします。

要点まとめ

・複数の同じ型のインスタンスを作って、それぞれ操作することができる