2.4 変数を使った条件分岐

今回の目的
 前回学んだ変数を用いて、条件分岐を行います。

 


条件判断文
 条件判断文には「if」「変数」「等号・不等号」を用います。 

 簡単な例を見てみましょう。

*define

clickstr "。!?",2

game
*start

mov %0,1

if %0=1  変数には1が代入されています。

if %0!=1 変数には1以外の値が代入されています。

end
 
 そのとおりですね。

 では条件判断文の書き方を説明します。
 「if」の後に「条件式」と「実行文」を書きます。
 条件式が正しいなら、その後に続く実行文が実行されます。
 条件式が間違っていたら、その後に続く実行文は無視されます。

 この場合「%0=1」という条件式が正しかったので、その後の文章が表示されました。
 逆に「%0!=1」は間違っているので、その後の文章は無視されました。

 むっ、「!=」なんて記号しらないぞ!
 そう思われる方もたくさんいらっしゃるかと思います。

 ではここで、条件式に使われる記号を一挙紹介しましょう。

 「A=B」…「AとBは等しい」(「A==B」とも書ける)
 「A!=B」…「AとBは等しくない」
 「A>B」…「AはBより大きい」
 「A<B」…「AはBより小さい」
 「A>=B」…「AはB以上」
 「A<=B」…「AはB以下」

 これらを使った条件式を駆使して条件判断文を作ります。

 「%0>=%1」のように、変数どうしを比較することも可能です。
 また、実行文ではテキストだけでなく「bg」や「goto」などの命令文も使えます。



 条件式は一つだけとは限りません。
 複数の条件式を合わせることも出来ます。

 select文も使って、少し複雑なものを作ってみましょう。

*define

clickstr "」。!?",2

game
*start

一番目の数は?
select "1",*one,"2",*two

*one
mov %0,1
goto *second

*two
mov %0,2
goto *second

*second
二番目の数は?
select "1",*one_,"2",*two_

*one_
mov %1,1
goto *bunki

*two_
mov %1,2
goto *bunki

*bunki

if %0=1 && %1=1 一番目と二番目は共に1です。
if %0=2 && %1=1 一番目が2、二番目が1です。
if %0=1 && %1=2 一番目が1、二番目が2です。
if %0=2 && %1=2 一番目と二番目は共に2です。

end
  
 選択肢で選んだとおりの数が表示されます。

 条件式を「&&」でつなぐと、「〜かつ〜」という意味になります。
 例えば「%0=1 && %1=1」だと、「%0は1かつ%1は1」になります。

 「&&」は「%0=1 && %1=1 && %2=0 && %3=2」のように複数つなげることも出来ます。

 また「&」だけでも同じ意味になります。



 「if」と反対の意味の「notif」という命令文もあります。

 「notif」は条件式が間違っていたら、その後に続く実行文を実行します。
 逆に条件式が正しければ、その後に続く実行文を無視します。

 


実行文の書き方
 「条件判断文」の途中では改行は出来ません。
 つまり今のままでは、一つの条件判断文では一つの実行文しか書けないのです。
 それではあまりに不便です。

 そこで「if」文中では実行文を「:」でつなぐことが出来ます。

*define

clickstr "。!?",2

game
*start

mov %0,1

if %0=%1 wave "sound\bang.wav" : goto *bang
if %0!=%1 wave "sound\heli.wav" : goto *heli

*bang
銃声が鳴りました。

end

*heli
ヘリコプター音が響いてます。

end
 
 「バキューン」と銃声が聞こえます。

 「wave」命令と「goto」命令が「:」で接続されていますね。
 このように「if」文では「:」を使って、複数の命令文を一行にまとめて書いてしまします。

 「goto」命令を先に使うと、「wave」命令は飛ばされてしまいます。
 順番には注意しましょう。

 


まとめ
 大半の変数は、この条件判断文、すなわち「if」文のために使います。
 ゲーム中でよく用いるので覚えておきましょう。

 次節では、スプライトを画面に表示させます。
 某炭酸飲料のことじゃないですよ。

 


前へ    TOPへ戻る    次へ