dポイントプレゼントキャンペーン実施中!

画像Aが出たらクリック、その後、画像Bが出てくるまで待ち。画像Bが出てきたら画像Bをクリック
と言う処理を繰り返し行うという文を書きたいのですが、一回で止まってうまくいきません。
画像は認識できてます。
どうかよろしくお願いします。

for i = 0 to 100
while true
Ifb CHKIMG("A.bmp") Then
BTN(LEFT,CLICK,G_IMG_X + 30, G_IMG_Y+ 30,50)
break
Endif
wait(0.1)
Ifb CHKIMG("B.bmp") Then
BTN(LEFT,CLICK,G_IMG_X + 30, G_IMG_Y+ 30,50)
break
Endif
wait(0.1)
wend
next

質問者からの補足コメント

  • 回答ありがとうございます。
    確認したところ、A.bmpクリックしたらB.bmpも一緒に消えます。
    消えた後、A.bmpとB.bmpが一緒に表示されます。

    よろしくお願いします。

    No.1の回答に寄せられた補足コメントです。 補足日時:2018/07/24 12:30
  • 回答ありがとうございます。
    回答いただいたソースコードをコピーして使用したのですが

    WAITがありません。
    9行目WAIT(0.1)
    と表示されてしまうのですが何が原因ないのでしょうか?

    No.3の回答に寄せられた補足コメントです。 補足日時:2018/07/25 01:23

A 回答 (3件)

> と表示されてしまうのですが何が原因



???そこ、オリジナル質問からコピペしただけですから、それで動かないんだったらオリジナルでも動かないはずですが?

私はてっきり、コピペしてない部分にfunction wait みたいに別に書いてあるものだと思っていましたが、そうではないってことなら、waitをsleepにしてください。
    • good
    • 0

> 確認したところ、A.bmpクリックしたらB.bmpも一緒に消えます。


> 消えた後、A.bmpとB.bmpが一緒に表示されます。

なるほど~、だったら今の書き方だとそうなりますね。

A.bmpクリック→
Wait(0.1)の間にB.bmpも消えるからスルーされる→
A.bmpとB.bmpの両方が表示されるから、A.bmpの判定になり(以下繰り返し)

って動きになるから…。なので対策として安直なのは、A.bmpをクリックしたぞフラグを追加することでしょう。こうすると、何かの拍子に間違っていきなりB.bmpが出てきた場合の対策もできます。

clicka=0 //フラグ初期化
for i = 0 to 100
while true
Ifb CHKIMG("A.bmp") AND clicka<>1 Then
clicka=1 //フラグ立てる
BTN(LEFT,CLICK,G_IMG_X + 30, G_IMG_Y+ 30,50)
break
Endif
wait(0.1)
Ifb CHKIMG("B.bmp") AND clicka=1 Then
clicka=0 //フラグ戻す
BTN(LEFT,CLICK,G_IMG_X + 30, G_IMG_Y+ 30,50)
break
Endif
wait(0.1)
wend
next
この回答への補足あり
    • good
    • 0

ひとつ確認ですが、A.bmpってクリックしたら消えるんですか?消えないとすると、1つ目のIfbの中でbreakしてWhileループを抜けちゃうから、永久にB.bmpの判定に進みませんよね。

この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています