前回学んだ変数を用いて、条件分岐を行います。
| ||
条件判断文には「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」文のために使います。
ゲーム中でよく用いるので覚えておきましょう。 次節では、スプライトを画面に表示させます。 某炭酸飲料のことじゃないですよ。 | ||