条件式とは、文字通り分岐や採用のための「条件」のこと。




条件式のきほん

>ジャンプ先【タブ】(条件式)
*トーク名【タブ】(条件式)
@単語群名【タブ】(条件式)

主にでてくるのはこれ。他にはif関数とかで使う。
この条件式がである時にそれぞれ有効になる。
逆にの時には、無効になる。
トークや単語群で使った時の効果は、特殊記号*の採用条件を参照のこと。

「真」と「偽」

たぶん一般的なプログラミング用語だと「真偽」。
条件式を実行・展開すると、それは必ず「真」か「偽」になる。
これは、文字通り、正しいか間違っているかの二種類を指す。
「YES」か「NO」か、と言い換えてもいい。

    • 条件式があてはまる・YES
    • 1以上の数字(厳密には0以外)
    • 条件式があてはまらない・NO
    • 0(数字のゼロ)

条件式に使うもの

何だっていい。
上に書いたように、最終的に0以外の数字なら「真」になるのだから、計算式を使ってもいいわけだ。
文字列判定のような、条件式そのまんまのような関数だってある。
が、だいたいは以下のものをよく使う。

比較演算子
計算式にこれを使う。
200>100
こういうやつね。
で、比較演算子を使った場合、それが合っていれば「1(真)」、間違っていれば「0(偽)」に置き換わる。
ついでに、数字の計算と、こういう記号による変な計算?のことをまとめて「演算」と呼ぶ。ああだから「演算子」ね。
変数
その変数の中身が存在しない時は、常に偽。
変数の中に、さらに計算式を書いたっていい。

比較演算子の例

演算子一覧にある。一例として取りあげると…


  • A==BAとBが等しければ1
    AとBが等しくなければ0
    A!=BAとBが等しくなければ1
    AとBが等しければ0
    A>BAがBより大きければ1
    AがBより小さい、またはAとBが等しければ0

そんなこんなで、演算(計算)していくと、最後には1か0になる。

ジャンプと条件式の動作

さて、本題。
冒頭で書いたように、里々では様々な箇所に条件式を使うことができる。

>ジャンプ先【タブ】条件式

とあった場合、条件式の計算結果が真(0以外の数値)であればジャンプし、偽(0)であればこの行を無視して次の行へ進む、ということになる。
条件式は最終的に数値であればいいので、極端な例では

*てすと
>ジャンプ先0【タブ】0
>ジャンプ先3【タブ】3
>ジャンプ先5

とすると、「ジャンプ先0」は永遠にスルーされ、必ず「ジャンプ先3」へと進む事になる。
もちろん「ジャンプ先5」はまったく触れられもしない。

今度は条件式に比較演算子を使ってみる。

*
>おやつタイム【タブ】(現在時)==15
>夜中のおやつ【タブ】(現在時)==3

*おやつタイム
:三時だ。おやつにしよう。

*夜中のおやつ
:三時だ。おやつにしよう。
:夜中の三時じゃねえか!

(現在時)は現在の時刻に置き換わる情報取得変数
昼間の三時は15。夜中の三時の時は相方が夜中だ!と怒る。

TIPS

比較に関する話

文字列を比較するとき、数字や算術記号が含まれているとエラーが出る事があるため、compare関数やequal関数を使用した方が安全。

>イベント【タブ】(変数)==比較文字列

これを下の様に書き換える。

>イベント【タブ】(compare,(変数),比較文字列)

ただし、compare関数では半角と全角の文字を同一とみなす判定が行われる。
それらを厳密に同じかどうか判定するには、equal関数を使おう。

比較演算子 && と || の使い方

一つの式の中に、複数の条件を設定したいときに使う。
&&は「かつ」、||は「または」をさす。
論理回路で言うと、ANDとOR。×と+。
これだけだと何がなんだか分からないと思うので、以下例。

*0Headなでられ
>なで好反応【タブ】(好感度)>=30&&(累計起動時)>=5
:……。

*なで好反応
:………ありがと。

上の条件は『(好感度)が30以上かつ(累計起動時)が5以上』という意味。
&&の左右両方の条件式が真(0以外)の時にだけ、1。それ以外は0になる。
全ての条件を満たした場合に1と考えてもいい。

続いて||を使ったものが以下。

*起動
>寒い【タブ】(現在月)==12||(現在月)==1||(現在月)==2
:こんにちは〜。

*寒い
:こんにちは〜。
寒いね〜。

こちらの条件式は、『(現在月)が12またはまたは2』という意味。
||の右左の条件式のどれか一つでも真(0以外)なら、計算結果は1になる。
条件をどれか一つでも満たした場合に1と考えてもいい。

比較演算子 && と || の優先度

詳細は比較演算子
四則計算で「+−よりも×÷を先に計算する」というルールがあるように、演算子にも計算する順番がある。
すぱっと言ってしまうと、||は一番最後、&&は最後から二番目に計算される。

  • 例えばこんな風に式が3つあったとする。
    10 + 10 && 20 + 20
    10 + 10 && 20 + 20 || 30 + 30
    10 + 10 && 20 + 20 || 30 + 30 && 40 + 40
    四則計算が先にされるので、↓のようになる。
    だいぶすっきりする。
    20 && 40
    20 && 40 || 60
    20 && 40 || 60 && 80 
    次に、&&が先に計算される。
    おいこれ何やっても1じゃねえか!
    1
    1 || 60
    1 || 1
    最後に||を計算しましょうね。
    1
    1
    1

なんともまあ酷いモデルだけど、感覚はつかめたと思う。
最優先の半角括弧も用意されているので、これで計算順序を操作してもいい。

単語単体を条件式にする

条件式の部分に単語だけ書いても条件式として使える。

*OnMinuteChange
>見切れ【タブ】(R1)

*見切れ
:画面の外からこんにちは。
:黙ってろ。
:うー。

このとき、(R1)に文字列や0以外の数字が入っている場合「見切れ」にジャンプ。
(R1)が0か、又は存在しない変数だった場合はジャンプしない。
つまり

*OnMinuteChange
>見切れ【タブ】(R1)!=0

こう記述した時と同じ。~

*OnMinuteChange
>見切れてない【タブ】!(R1)
:画面の外からこんにちは。
:黙ってろ。
:うー。

単語の左に「!」を入れると逆の意味になる。
(R1)が0か存在しない変数の時、「見切れてない」へジャンプする。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-05-27 (日) 15:41:34 (176d)