こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

UWSCで任意ボタンをおした時 複数条件分岐

UWSCでのプログラムの書き方についての質問です。
ある任意のボタンをおした時に指定した画像があるか確かめてあれば
指定した画像をクリックさせたい場合の方法を教えていただきたいです。

EScボタンをを押すまで無限ループ。
条件が複数あるのでIFを使いたいとかんがえています
任意のボタンを押したことで、指定した画像と一致するものがあるか確かめ、
一致した場合、指定した画像をクリックする。

それを沢山作りたい。
追加していきたい。

いくつまでの条件分岐ができるのかわからないし、
どのコマンドを使えば良いのかもわからず1年近く四苦八苦していました。
一般的条件分岐だとIF関数ですが、
もっと楽な方法があれば
お手数ではございますが
解説付きでご教授のほどよろしくお願いします。



---------------------
WHILE !GETKEYSTATE(VK_ESC) //ESCを押すまでループ
 
if GETKEYSTATE(VK_y) then //yが押されたら
BTN(LEFT,CLICK,g_img_x,g_img_y) //画像1をクリック
  
elseif GETKEYSTATE(VK_u) then //uが押されたら
chkimg("画像2.bmp")=true
BTN(LEFT,CLICK,g_img_x,g_img_y) //画像2をクリック

elseif GETKEYSTATE(VK_t) then //tが押されたら
chkimg("画像3.bmp")=true
BTN(LEFT,CLICK,g_img_x,g_img_y) //画像3をクリック

elseif GETKEYSTATE(VK_a) then //aが押されたら
chkimg("画像4.bmp")=true
BTN(LEFT,CLICK,g_img_x,g_img_y) //画像4をクリック

elseif GETKEYSTATE(VK_w) then //wが押されたら
chkimg("画像5.bmp")=true
BTN(LEFT,CLICK,g_img_x,g_img_y) //画像5をクリック

endif
wend
---------------------


上記が
自分で書いたプログラムなのですが、
間違いだらけと承知の上
恥を忍んで重ね重ねご教授のほど
よろしくお願い申し上げます

投稿日時 - 2017-11-12 11:41:24

QNo.9396504

困ってます

質問者が選んだベストアンサー

一行ずつにまとめてみました。
どのみちループで全部チェックされるのだから、elseは入れませんでした。
その代わりキーが重複した場合スルーされません。
---------------------
WHILE !GETKEYSTATE(VK_ESC) //ESCを押すまでループ

//同一キーの重複はすべてチェックされます 
//[y]が押されたら[画像1]をクリック
if GETKEYSTATE(VK_y) and chkimg("画像1.bmp") then BTN(LEFT,CLICK,g_img_x,g_img_y,100)
//[u]が押されたら[画像2]をクリック
if GETKEYSTATE(VK_u) and chkimg("画像2.bmp") then BTN(LEFT,CLICK,g_img_x,g_img_y,100)
//[t]が押されたら[画像3]をクリック
if GETKEYSTATE(VK_t) and chkimg("画像3.bmp") then BTN(LEFT,CLICK,g_img_x,g_img_y,100)
//[a]が押されたら[画像4]をクリック
if GETKEYSTATE(VK_a) and chkimg("画像4.bmp") then BTN(LEFT,CLICK,g_img_x,g_img_y,100)
//[w]が押されたら[画像5]をクリック
if GETKEYSTATE(VK_w) and chkimg("画像5.bmp") then BTN(LEFT,CLICK,g_img_x,g_img_y,100)

wend
---------------------


発展形としては配列変数に入れておくとか
---------------------
DIM KEY[] = VK_Y, VK_U, VK_T, VK_A, VK_W //先にたくさん登録
DIM IMAGE[]="画像1","画像2","画像3" //3個だけいれると
WHILE !GETKEYSTATE(VK_ESC)
For i = 0 to LENGTH(IMAGE) //3個の画像だけ回る
IF GETKEYSTATE(KEY[i]) and CHKIMG(IMAGE[i]) then
BTN(LEFT,CLICK,g_img_x,g_img_y,100)
BREAK //スルーするためForループを抜ける
ENDIF
NEXT
WEND
---------------------

投稿日時 - 2017-11-13 01:41:49

お礼

なるほど。
返事が遅くなり誠に申し訳ありませんでした。
&を使うと良かったのですね。
Excel関数と違い&付けるとどのように動作するのかわからなかったので
大変助かりました。
DIMの使い方も詳しく解説つけてくださりありがとうございました
(人>д<*ペコ感謝)

投稿日時 - 2017-11-13 20:26:59

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問