「if (条件式)」の形です。もし〜なら、次を実行するということになります。まずは等しい(=)ことを意味する等号の比較です。「=」をHSPで表現するには、半角のイコールを用意します。
a=30-20
// 変数aが10なら (変数aが10と等しい)
if a=10{
mes "等しいので表示される"
}
mes "完了"
変数aに10が代入されているので、条件式が当てはまるため文字が表示される。「{ 〜 }」を使わない次のような書き方も同じで、「:」以降の行が処理される。
a=30-20
// 変数aが10なら (変数aが10と等しい)
if a=10:mes "等しいので表示される"
mes "完了"
次に、等しくないを意味する不等号(!=、!)の比較です。「≠」をHSP上で表現するには、半角でエクスクラメーションマークとイコールか、イコールなしのエクスクラメーションだけのものを指定する。
a=30-20
// 変数aが10でないなら (変数aが10以外)
if a!=10{
mes "等しくないので表示されない"
}
mes "完了"
a=30-20
// 変数aが10でないなら (変数aが10以外)
if a!10{
mes "等しくないので表示されない"
}
mes "完了"
変数aは10なので表示されない。
次は以上、以下、超える、未満の比較です。「>」は半角で「>」、「≧」は「>」とイコール、「<」は半角で「<」、「≦」は半角で「<」とイコールで表現する。
a=10
// 変数aが10を超えるなら (変数aが11〜)
if a>10{
mes "> が成り立つ"
}
// 変数aが10以上なら (変数aが10〜)
if a>=10{
mes "≧ が成り立つ"
}
// 変数aが10未満なら (変数aが〜9)
if a<10{
mes "< が成り立つ"
}
// 変数aが10以下なら (変数aが〜10)
if a<=10{
mes "≦ が成り立つ"
}
mes "完了"
複数の条件式を組み合わせる場合は、and(&)とor(|)です。「A & B」だとすると、A条件とB条件のどちらも成り立つ必要がある。「A & B & C」だとすると、A条件とB条件とC条件のどちらも成り立つ必要がある。
a=10
b=1
// 変数aが10で、かつ変数bが0なら
if a=10&b=0 {
mes "成り立たないので表示されない"
}
mes "完了"
a=10
b=1
c=5
// 変数aが10で、かつ変数bが1、かつ変数cが1なら
if a=10&b=1&c=5 {
mes "成り立つので表示される"
}
mes "完了"
「A | B」だとすると、A条件かB条件かどちらかが成り立つ、あるいは両方が成り立つ必要がある。
a=10
b=1
// 変数aが9なら、あるいは変数bが1なら
if a=9|b=1 {
mes "変数bだけが成り立つ"
}
mes "完了"
elseは最初の条件式が成り立たなかった場合に処理される。
a=10
// 変数aが9なら
if a=9 {
mes "変数aは成り立った"
}else{
mes "変数aは成り立たなかった"
}
mes "完了"
変数aが9以外は必ずelse以降のコードに進むことになる。
下は文字を比較対象にしたサンプルソースである。(利用してるオブジェクトのボタンやインプットボックスはこの後の講座で説明)
mes "日本一のっぽな山は「■■山」である (漢字2文字)"
kaito = ""
input kaito
button "答え",*kotae
stop
*kotae
if kaito="富士"{
mes "正解!"
}else{
mes "違うよ!"
}
mes "完了"
たとえば、おまけで「富士山」も正解にしたい場合は次のようにor(|)を用意すればよい。(前後のコード略)
if kaito="富士"|kaito="富士山"{
次は、乱数で発生させた数値(0〜99)を当てるサンプルソースです。指定した数値と等しかったら、少なかったら、大きかったら、というような条件式を用意している。そして、等しかた場合で、一発正解の場合の処理を用意して条件分岐を複数用意している。
count = 1 ; 解答回数
randomize
value=rnd(100)
title ""+value+"" ; 答え
kaito=0
input kaito
button "答え",*kotae
stop
*kotae
if kaito=value{
if count=1{
mes "一発目で正解!"
}else{
mes "正解! ("+count+"回目)"
}
; リセット処理
count=1
value=rnd(100)
title ""+value
stop
}
if kaito>value{
mes "もっと下"
}
if kaito<value{
mes "もっと上"
}
count++