条件分岐するif(ifb)文の使い方とサンプルコード

      2016/05/15

条件分岐するための IF(IFB)~ENDIF制御文 の使い方とサンプルコードです。
UWSCの記録機能を使ったものだけでは必要最低限以下の処理しか出来ません。

条件によって処理を変える IF(IFB)~ENDIF制御文 を覚えましょう。

if の基本的な使い方

if 式 then 真 [else 偽]

if文は「もしも式が真の時はAの処理(偽ならBの処理)」という条件分岐です。
式には分岐の為の条件、真には真の時の処理、偽には偽の時の処理が入ります。

真(ture)や偽(false)というのは、最初は「式に書いた処理が上手くいったら真で上手くいかなかったら偽が帰ってくる」と覚えたらよいでしょう。

もし この処理が 真の時には 真の時の処理 [そうでなければ 偽の時の処理]

では実際に関数を当てはめて試してみます。
CHKIMG関数 では、画像が一致するとtrue、一致しなければfalseが戻り値として返ってきます。

ゲームマクロに活用できるよう、画像が見つかればそこをクリックするif文を書きましょう。

if chkimg("filename.bmp") then btn(LEFT,CLICK,G_IMG_X,G_IMG_Y)

たったこれだけで画像を探して見つかればクリックする処理の完成です。
(G_IMG_X,G_IMG_Yというのは、chkimgがtrueだった時、つまりfilename.bmpと一致する部分を見つけた際に、その座標が自動的に格納される特殊変数です)

上記のサンプルコードでは、chkimgがtrueの時に対象座標をクリックすることが出来ますが、見つからなかったときの処理が書いてありません。

真の時の条件だけ書いてあれば、見つからなかった場合次の処理に移りますが、もし見つからなかった時に特別な処理をさせた場合はelseを使います。

if chkimg("filename.bmp")
btn(LEFT,CLICK,G_IMG_X,G_IMG_Y)
else
fukidasi("画像が一致しません")
endif

上記のサンプルコードでは同じように画面内からfilename.bmpを探し、存在したらクリックし、存在しなければ「画像が一致しません」とバルーンがでます。

複数行に渡るif文には終了を明示するendifが必要です。

ifb文の使い方

if 式 [then] (もしくはifb)
真
[elseif 式 [then]]
:
[else]
偽
endif 

ifb文では、真ならA偽ならBという処理ではなく、「この時はAでこの時はB、どちらでもなければC」のような条件分岐をする為のものです。

ややこしくなったように見えますが、実際に書いてみるととてもシンプルです。
書き方そのものは if then else と同じで、最後に endif を付ける事さえ忘れなければ大丈夫です。

ifb文の具体的なサンプルを同じくchkimgで書いてみます。
以下の例ではimage1.bmpと一致しなければimage2.bmpを探して見つかればbtn処理を行います。
もしどちらとも一致しなければelseの処理(msgbox)が行われます。

ifb chkimg("image1.bmp")
btn(left,click,g_img_x,g_img_y)
elseif chkimg("image2.bmp")
btn(left,click,g_img_x,g_img_y)
else
msgbox("画像が見つかりません")
endif

※この項目はメールでの質問を元に<2016/05/15>に追記しました。

「もっと詳しく!」「こうできないの?」この記事に関連する質問や要望があればコメントで聞こう。

 - サンプルコード , , , , , , , , , , , , , , , , , ,