コウです、よろしくお願いします!
「ゼロからプログラミングを始める」人に役立つ情報を発信しています。
今回はDay67「上げたり下げたり」です。どうぞ!!
解答例
まずは解答例を確認しましょう。
コードは次のようになります。
タイトルは「上げたり下げたり」なんですけど、
僕のやり方だと「上げる」しか使いませんでした。
解答例を動画で確認する
上記のコードを実行した結果がこちらになります。
ステージ攻略「上げたり下げたり」
それではステージを攻略していきましょう!
今回のクリア条件は、『宝石を7つ集める』ことです。
ホッパーの動きたいルートは赤い線です。
線だけだとわかりにくかったので、宝石を取る順番も数字で入れました。
追加されたコマンド
今回から2つのコマンドが追加されました。
- move(distance: Int)
- turnLock(up: Bool, numberOfTimes: Int)
それが上記の2つです。
前回までは両方とも関数として定義する必要がありました。
けっこう手間だったので、標準搭載されたのは嬉しいですね!
宝石を取る関数を定義する
使う頻度が高い関数は定義しましょう。
func chGetAndTurn() {
character.move(distance: 2)
if character.isOnGem {
character.collectGem()
}
character.turnLeft()
character.turnLeft()
character.move(distance: 2)
}
もう一度ルートを見てください。
①・②・③・④の宝石を取る時には全て、『2マス進んで宝石を取り後ろを向いて2マス進む』ことをしています。
4回も使うので関数として定義したほうが楽ですよね。
床を全て1つずつ上げる
エキスパートは鍵に4方向を囲まれた場所にいますよね。
つまり次のようなコードを書いてあげると、
全ての上下するマスを1つずつ上げてくれます。
for i in 1 … 4 {
expert.turnLock(up: true, numberOfTimes: 1)
expert.turnLeft()
}
これは3種類を3マス分上げる時にも使いました。
まとめ:上げたり下げたり
自分の通りたいルートによって、
定義する関数やマスの上げ下げは変わってきます。
今回のポイントを振り返りましょう。
- パラメータを使った2つのコマンドが追加
僕の解答例は参考程度にして、
自分のオリジナルを見つけてみてください!
次回はDay68「決まった位置に置く」でお会いしましょう!それでは!!