コウです、よろしくお願いします!
「ゼロからプログラミングを始める」人に役立つ情報を発信しています。
今回はDay54「決まった数だけスイッチを入れる」です。どうぞ!!
解答例
まずは解答例を確認しましょう。
解答例
コードの解答例は次のようになります。
解答例を動画で確認する
上記のコードを実行した結果がこちらになります。
複合代入演算子「 += 」
今回から新たに登場した「 += 」という記号。
説明文にもありますが、複合代入演算子というものです。
これは入力を省略してくれるものです。
gemCounter = gemCounter + 1
今まではこう↑書いていたものを
gemCounter += 1
このように↑書くことができます。
どちらで書いても意味は同じです。
ですが、今回登場したものを使う方がスマートですね!
ステージ攻略「決まった数だけスイッチを入れる」
それではステージを攻略していきましょう!
今回のクリア条件は、『集めた宝石と同じ数だけスイッチを入れる』ことです。
宝石の数はランダムに出現します。
その数がいくつであっても、
同じ数だけスイッチを切り替えなければいけません。
変数を宣言する
まずは変数を宣言します。
var gemCounter = 0
var switchCounter = 0
宝石の数とスイッチの数を数える変数を宣言しました。
whileループの条件
switchCounter < gemCounter || gemCounter == 0
ループの条件は、2つ付けました。
『スイッチの数が宝石の数より少ない時』と
『宝石の数が0個の時』です。
順に説明していきます。
スイッチの数が宝石の数より少ない時
switchCounter < gemCounter
コードを実行すると、まず初めに宝石を取っていきます。
そして取った宝石の分だけスイッチを切り替えます。
つまり先に取るので宝石の数の方が多い状態になります。
そしてスイッチを切り替えていくと宝石の数とスイッチの数が同じになる時がきます。
その時がこのループの終わりであり、クリア条件になります。
もう一つの条件につながるのですが、
宝石とスイッチの数が同じだとループは動きません。
宝石の数が0個の時
gemCounter == 0
先ほど言ったように宝石とスイッチの数が同じだとループは動きません。
これは両方とも0の時も同じです。
初めは両方とも0なので、ループが動き出さないんですね。
そこで、『||』を使って『もしくは宝石の数が0の時』も付けました。
これで両方とも0でもループが動き出します。
ちなみにこちらの条件は宝石を取った時点で無効になるので、
すぐに役目を終えることになります。
whileループの中身
あとは、前回までと同様です。
- 1マスずつ調べる
- 宝石のマスにいる時には、宝石を取って宝石の数にプラス1する
- 前が行き止まりの時には、右を向く
- スイッチのマスにいる時には、スイッチを入れてスイッチの数にプラス1する
これらをif文と組み合わせて入れてあげればOKです。
まとめ:決まった数だけスイッチを入れる
「 += 」を使うことで、
入力を省略することができるようになりました!
今回のポイントを振り返りましょう。
- 「 += 」を使うと値を足すと同時に代入することができる
次回はDay55「決まった数だけ集める」でお会いしましょう!それでは!!