スクリプトを使うのに絶対に必要なのが、この条件分岐[if]でございますね。もし~したならば、~する。というものです。これがまた複雑で混乱してくるんですよ。でも便利なので、ぜひマスターしたいところですね。じゃあ早速解説行ってみよう!あ、Twitterのフォローよろしくね~!(@1monjigame)
そもそも条件分岐[if]ってなんぞ?
冒頭でもちょっとお話しましたが、ifというのは英語の通りで「もし~したならば~」の文章の時につかうものです。例えば、もしもクイズに外れたらAと言う処理、もしもクイズに当たったらBと言う処理をします。といったことが可能です。
[if]の使い方
必要な情報
- 分岐条件は一体何?
- パターンはどれくらい?
ひとまず、自分が一体何を分岐する条件としたいかを確認しましょう。例えば、ここで前の例を使うと「クイズに正解したか否か」が条件分岐になります。
次に、どういう風に分岐させるか、処理の内容を考えましょう。「正解ならピンポン効果音を鳴らす」「不正解ならぶっぶー効果音を鳴らす」など。これらをスクリプトに変換していきましょう。
[if]のテンプレ
[if exp=”変数名 比較式”]
~↑に当てはまる時の処理~(条件A)
[elsif exp=”変数名 比較式”]
(条件A)に当てはまらない場合で、まだ条件を指定したい場合はこう書く
(条件B)にあてはまる時の処理
[else]
~上記全てに当てはまらなかったときの処理~
[endif]
[if]文を作る際に使うと分かり易いコツ
- 大まかな型は最初に書いておく
- 入れ子(if文の中にif文を入れる)するときはタブで段落を作る
大まかな型は最初に書いておく
よくあるのが、[if]書きまくって最終的に[endif]を書き損ねていてエラー[if文が閉じられてません]みたいな表示がでるやつ。これ出ると、エッどこの[if]閉じてないっけ?エッ????ってなってめちゃくちゃ要らん時間を取られるんですよ。なので、最初に書いておきます。型だけでも。
[if exp=””]
[elsif if exp=””]
[else]
[endif]
っていうのを最初に書いておけば、対応する[endif]がありませんとか、消したりしなければ言われることもありませんからね。ここから中身を書き足していきます(笑)
入れ子(if文の中にif文を入れる)するときはタブで段落を作る
[if]文を書きまくっていると、[if]の中に[if]を入れたいってことが出てくると思います。そういうときは後から見ても分かり易い様に、こんな感じにしておくとよいと思います。
[if exp=”変数~”]
[if exp=””]
処理~
[endif]
[else]
処理~
[endif]
こんな感じにしておくと、どの段階の[if]なのかが分かり易くなると思います。(このブログ、タブが使えんかったのでスペースで表現していますが、ティラノではタブキーを使うことをお勧めします。そっちのが断然早いので!)
[if]文の比較式とは?
数学で言う計算式みたいなものです。エクセルの関数などをちょっと触ったことがある方はお分かりのことでしょう。
条件式 | 内容 |
---|---|
A == B | AとBは等しいとき |
A != B | AとBが等しくないとき |
A > B | AがBよりも大きいとき |
A >= B | AがB以上のとき(Bも含んだ値) |
A < B | AがBよりも小さいとき |
A <= B | AがB以下のとき(Bも含んだ値) |
例文としてはこんな感じ。もしもテストの点数が50点以上だったら?が条件だとして、あなたの点数は変数f.あなたのテストの点数に入れておくとしましょう。もし50点以上なら祝福を。それ以外ならば残念!の現実を突きつけます。
[if exp=”f.あなたのテストの点数>=50″]
(ここは50点以上に当てはまるときの処理)
おめでとうございます~!
[else]
(それ以外の点数は問答無用に以下の処理をするelse)
残念!!赤点です!!!
[endif]
AとBは必ずしも数字でなくてもOKです。文章も判断できます。それについてはこちらの記事で紹介しております。
[if]文で複数条件を使いたい場合【&条件とor条件】
例えばですが、あなたが婚活をしているとしましょう。理想の相手は~、身長が170センチ以上でぇ~、職業が消防士でぇ~…と色々条件を出したい。そんなときに使いたいのがこれです。
条件式 | 内容 |
---|---|
A && B | and条件。AとBの両方にあてはまっているとき |
A || B | or条件。AとBのどちらかがあてはまっているとき |
理想の相手は身長が170センチ以上で、且つ職業が消防士ってことにしましょう。するとこうなります。
[if exp=”f.身長>=170 && f.職業==’消防士'”]
注目すべきは&&の存在です。どちらも合っている場合、という意味で使いました。
次、理想の相手は身長が170センチ以上か、もしくは職業が消防士ってことにしましょう。するとこうなります。
[if exp=”f.身長>=170 || f.職業==’消防士'”]
||で、もしくはどちらかが当てはまっていたら~という意味にします。
||よりも&&の方が強い
1つ頭の片隅に置いておいて欲しいことがあるとしたら、アンド条件の方がイフ条件よりも強いということです。例えば、条件が2つあるとしましょう。
[if exp=”f.身長>=170 && f.職業==’消防士’ || f.服装==’B系’ || f.好みのタイプ==’おしとやか系”]
この場合、複雑ですが一つの[if]文の中で2つの条件がだされています。
身長が170cm以上且つ職業が消防士(条件A)、もしくは、服装の趣味がB系か、この好みのタイプがおしとやか系か(条件B)。
プログラムがすい~っと流れる際、どちらが優先されるのかというと、且つ(&&)の方です。なので、身長が170cm以上の消防士であれば、服装の趣味が女装だろうが、好みのタイプがツンデレだろうが当てはまっちゃうってことですね(笑)
[elsif]と[else]の違い
[elsif]は、1番目に指定した条件に当てはまっていなかった場合で、また条件を指定したいときに使います。例えば、あなたは自動販売機のシステムを構築する係としましょう。で、投入されたのが硬貨の内のどれかを判断するシステムを作りたいとします。
実際に投入したのは50円です。それを判断するため、まず500円かどうかから判断していきますね。f.投入されし金に50が入っているとしましょう。
[if exp=”f.投入されし金==500″]
500円硬貨だった場合の処理~
[elsif exp=”f.投入されし金==100″]
100円硬貨だった場合の処理~
[elsif exp=”f.投入されし金==50″]
50円硬貨だった場合の処理~
[elsif exp=”f.投入されし金==5″]
5円硬貨だった場合の処理~
[else]
それ以外だった時の処理~
[endif]
こうして、次々条件を出したいときに、[elsif]を使います。そして最終的に当てはまらなかったときの処理を[else]に書き込むようにしましょう。この場合は[else]の中身に該当するのが1円の時の処理になりますね。
[if]文でループ処理をする
簡単に言うと、カウンタを使います。カウンタというのは、何回ループをしたかを判定するためだけのものです。変数の名前は何でもいいです。例えば5回「オラァ!!!」という文章を表示させたいとします。とすると、こうなります。
;オラカウントのリセット。0からスタートの場合ちょっと難しい。1からだと分かり易いかも?
[eval exp=”f.オラカウント=0″]
*オラァ!!!ループ
[if exp=”f.オラカウント<5″] ;もしもオラカウントが5よりも小さかったら表示
オラァ!!![p]
[eval exp=”f.オラカウント=f.オラカウント+1″] ;ここでカウンター+1しましょう
[jump storage=”scene1.ks” target=”*オラァ!!!ループ”] ;ラベルを使ってループじゃ!
[endif]