スポンサーリンク
スポンサーリンク
解答例
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ループで『行き止まりまで、もし宝石があれば取って進む』とします。
要点まとめ
・複数の同じ型のインスタンスを作って、それぞれ操作することができる
スポンサーリンク