コウです、よろしくお願いします!
「ゼロからプログラミングを始める」人に役立つ情報を発信しています。
今回はDay78「ループを作る」です。どうぞ!!
解答例
まずは解答例を確認しましょう。
コードは次のようになります。
解答例を動画で確認する
上記のコードを実行した結果がこちらになります。
ステージ攻略「ループを作る」
ステージを攻略していきましょう!
クリア条件
今回のクリア条件は、『ランダムな数の宝石を集める』ことです。
画像の中の白い宝石が見えるでしょうか。
これが宝石が出現する可能性のある場所です。
1〜5個の宝石がランダムに出現します。
5個の宝石が出現する場所を効率よく回れるようなループを考えましょう。
ワープがあるのでこれを生かしたいですね。
まずはステージ作りから。
ステージ作り
ブロックは(0,2)と(3,3)、
ワープは(2,3)と(7,3)を繋ぐもの、
ホッパーは(3,0)にそれぞれ配置しました。
これが配置後の画像です。
規則性のあるステージができました。
このように、効率よく回るためには規則性を持たせてあげるといいですね!
これで準備完了です。
ループを考える
今ホッパーがいる場所から出発して、またこの位置に戻って来れるように考えます。
このまま進むと緑のワープに入って、出た時に前は行き止まりになっています。
そこで左を向くと青のワープに向かって歩けますよね。
そしてまた青のワープに入って出ると、前は行き止まり。
左を向くと進むことができる。
この流れが続くのがわかりますでしょうか。
つまり、「進み続けて行き止まりがあったら左を向く」。
こうすることで、このステージをぐるぐる回り続けることができます!
そのためのコードがこちらです。
//「集めた宝石の数」が「集める宝石の数」より小さい場合は動き続ける
while gemCounter < totalGems {
hopper.moveForward()
//ホッパーの前が行き止まりなら左を向く
if hopper.isBlocked {
hopper.turnLeft()
//ホッパーが宝石のマスにいるなら、宝石を取ってから変数に+1する
} else if hopper.isOnGem {
hopper.collectGem()
gemCounter += 1
}
}
これでステージを無駄なく歩き回りながら、
宝石を取り切ったらループが自動で止まります。
まとめ:ループを作る
やはりブロックやワープの配置が重要になりますね。
今回のポイントを振り返りましょう。
- 規則性のあるステージを作ることができると、効率よく動くことができる。
次回はDay79「自分だけのステージ」でお会いしましょう!それでは!!