第6回:条件分岐
if
今回は連続で発射されていた弾の発射間隔を調整しましょう。
たとえば、5フレーム間隔で発射したいと思うとき、変数を使ってこう考えます。
5フレームごとに弾を発射したい
↓
変数countを用意して、1フレームごとにcountの数を1ずつ増やしていって、
countが5の倍数になったとき発射する
これを、[if]を使って、こう書きます。
let count = 0;
@Initialize{(略)}
@MainLoop
{
if(count%5==0)
{
CreateShot01(GetX, GetY, 2, 90, BLUE01, 10);
}
count++;
}
こう書けば、5フレームごとに1発ずつ弾が発射されるようになります。
処理を1つ1つ見ていきましょう。
let count = 0;
変数countを宣言して0で初期化します。これについては問題ないでしょう。
if(count%5==0){〜}
これが今回の重要な点です。
この文の意味は、もしcount%5==0なら"{}"の中の命令を実行しろ
といったような意味です。
"count%5==0"は、countを5で割った余りが0と等しいとき、つまりcountが5の倍数のとき
ということになります。
等しいといえば、「=」を使いたいところですが、「=」は代入で使うものでした。
そういうわけで、等しいということを表すには、「==」を用います。
count++;
この文は、countの値を1ずつ増やせという意味です。
count = count+1;でもcount+=1と書いてもかまいません。
1ずつ引く場合は、count--;と書きます。
以上のことをまとめると、5フレームごとに{}の中の命令が実行され、
弾が発射されます。
ここでif文をまとめてみましょう。
if(条件式){条件式が真のとき実行}
else{条件式が偽のとき実行}
真とは条件式が正しいこと、偽とは条件式が正しくないことをさします。
偽の時にも特別な処理をしたい場合はelseを使います。
elseの中で条件分岐をしたいときには、「else if(条件式)」と続けることができます。
else は「でなければ」といったような意味です。
if(条件式A){条件式Aが真のとき実行}
else if(条件式B){条件式Aが偽かつ条件式Bが真のとき実行}
else{条件式Aが偽かつ条件式Bが偽のとき実行}
基本的な条件式の記述
「a == b」 :aがbと等しい
「a > b」 :aがbより大きい
「a >= b」 :aがb以上
「a < b」 :aがbより小さい
「a <= b」 :aがb以下
「&&」は論理積を表します。「かつ」といった意味です。
if(a > 50 && b < 30)
{
aが50より大きく、bが30より小さいときに実行される
}
「||」は論理和を表します。「または」といった意味です。
if(c>=2 || b<=30)
{
cが2以上またはbが30以下のときに実行される
}
「&&」と「||」は組み合わせて使うことが出来ます。
例:[a==0&&b%5==0||GetLife>=500]
「aが0」かつ「bを5で割ったときの余りが0(bが5の倍数)のとき」
または「敵のHPが500以上のとき」
といった具合になります。
条件分岐はかなり重要なのでしっかり覚えておくようにしましょう。
次回はループ処理と関数の予定です。