コウです、よろしくお願いします!
「ゼロからプログラミングを始める」人に役立つ情報を発信しています。
今回はDay59「隅々まで歩き回る」です。どうぞ!!
解答例
まずは解答例を確認しましょう。
コードは次のようになります。
今回はループを使っていないので、長くなりました。
解答例を動画で確認する
上記のコードを実行した結果がこちらになります。
ステージ攻略「隅々まで歩き回る」
それではステージを攻略していきましょう!
今回のクリア条件は、『宝石を6個取って、スイッチを6個切り替える』ことです。
通りたいルートはこちら。
オレンジ→青→緑→赤
の順に進んでいきます。
今回もワープのオン・オフを適切に切り替える必要がありますね。
解答例に沿って、分割して説明していきます!
①関数を定義する
func goBack() {
moveForward()
turnRight()
moveForward()
if isOnGem {
collectGem()
} else if isOnClosedSwitch {
toggleSwitch()
}
turnLeft()
turnLeft()
}
まずは繰り返すことの多そうな行動を、関数として定義します。
宝石やスイッチは『十字』に配置されているので、
中心から出て戻ることが多くなりそうです。
スタート位置の兼ね合いで、
『1マス進む→右を向く→1マス進む
→宝石かスイッチがあれば取ったり切り替える→後ろを向く』
という関数になりました。
これを使って各エリアを攻略します!
②スイッチが2つあるエリア
まずは奥のスイッチが2つのエリアから。
orangePortal.isActive = false
turnRight()
moveForward()
for i in 1 … 2 {
goBack()
}
オレンジのワープがオンだと飛ばされてしまうので、オフにします。
定義した関数が使えるところまで移動してあげて、関数を2回使います。
③宝石が4つあるエリア
次に手前の宝石が4つある場所。
orangePortal.isActive = true
goBack()
orangePortal.isActive = false
for i in 1 … 3 {
goBack()
}
オレンジのワープをオンにして移動します。
移動した先ではまず1回だけ関数を使います。
ここで一気に4回使うと、
オレンジのワープがオンなので飛ばされます。
その後でオレンジのワープをオフにしてから関数を3回使いましょう。
④宝石が2つあるエリア
右側にある宝石が2つのエリアまで移動します。
moveForward()
turnLeft()
moveForward()
moveForward()
greenPortal.isActive = false
for i in 1 … 2 {
goBack()
}
緑のワープをオフにしてから関数を2回使います。
⑤スイッチが4つあるエリア
最後に左側のスイッチが4つのエリア。
緑のワープをオンにして移動します。
greenPortal.isActive = true
goBack()
greenPortal.isActive = false
for i in 1 … 3 {
goBack()
}
移動先では③と同様に1回だけ関数を使います。
ここで焦ると、元の場所に戻されます。
緑のワープをオフにしてから
関数を3回使えばステージクリアです!!
まとめ:隅々まで歩き回る
タイミングを間違えるとワープに飛ばされまくりますね。
今回のポイントを振り返りましょう。
- forループを使うタイミングをよく見定める
次回はDay60「宝石があちこちにランダムに」でお会いしましょう!それでは!!