コウです、よろしくお願いします!
「ゼロからプログラミングを始める」人に役立つ情報を発信しています。
今回はDay58「ワープを正しく操作する」です。どうぞ!!
解答例
まずは解答例を確認しましょう。
コードは次のようになります。
解答例を動画で確認する
上記のコードを実行した結果がこちらになります。
ステージ攻略「ワープを正しく操作する」
それではステージを攻略していきましょう!
今回のクリア条件は、『宝石を4個集める』ことです。
通りたいルートはこちら。
わかりやすくするために黒と青に分けています。
初めはピンクのワープに入って戻ります。(黒の線)
次に青のワープに入ります。(青の線)
前回同様、適切にワープのオン・オフを切り替える必要がありますね。
解答例に沿って、分割して説明していきます!
変数を宣言する
var gemCounter = 0
今回は『宝石の数』によって
ワープの切り替えをしていきます。
そこで、宝石の数を数える変数を宣言しました。
変数については↓から
whileループの条件
今回もwhileループを使っていきます。
gemCounter < 4
宝石が4個集まったらクリアなので、
宝石の数が4個になったらループが止まるようにします。
①ワープのオンとオフを切り替える
今回の重要ポイントですね。
if gemCounter == 0 {
bluePortal.isActive = false
pinkPortal.isActive = false
} else if gemCounter == 1 {
pinkPortal.isActive = true
} else if gemCounter == 2 {
bluePortal.isActive = true
} else if gemCounter == 3 {
bluePortal.isActive = false
}
宝石の数が『0個・1個・2個・3個』の時に
ワープのオン・オフを制御します。
ルートと照らし合わせましょう。
0個の時には、1つ目の宝石まで行きたいので、ワープは両方ともオフ。
1個の時は、ピンクを使ってワープしたいので、ピンクだけオン。
2個の時は、ピンクを使って戻ってから青を使ってワープしたいので、青をオン。
3個の時は、青がオンだと戻されてしまうので、青をオフ。
これでスムーズに行き来できるようになります!
②1マス進む
moveForward()
1マスずつ進んで調べていきます。
今回はワープのオフを先に行いたいので、その下に書きます。
③宝石を取り数を数えて後ろを向く
if isOnGem {
collectGem()
gemCounter += 1
turnLeft()
turnLeft()
}
①の条件に関わってくるので、
宝石を取ったら必ず変数の値にプラス1をしましょう。
どの宝石も取った後に振り向くことになるので、
それも入れておきます。
④後ろを向く
if isBlocked {
turnLeft()
turnLeft()
}
宝石を取ったらUターンするようになっていますが、それ以外にも後ろを向かないといけないところもあります。
『前が行き止まり』の時には後ろを向くようにしてあげます。
まとめ:ワープを正しく操作する
ワープを切り替えることで、ゲーム性が出てきて楽しいですね!
今回のポイントを振り返りましょう。
- 必要な時に適切にワープのオンとオフを切り替える
次回はDay59「隅々まで歩き回る」でお会いしましょう!それでは!!