プロが教える店舗&オフィスのセキュリティ対策術

画像がAになったらその画像をクリックしてBに変わったらまたクリックするというのを作りたいのですがどうにもA画像の時にクリックが連打になってしまします
どこが悪いのでしょうか?
While True

Ifb ChkImg("A.bmp",0)

BTN(LEFT,CLICK,G_IMG_X+5,G_IMG_Y+5,80)
ChkImg("B.bmp",0)
BTN(LEFT,CLICK,G_IMG_X+5,G_IMG_Y+5,80)

ENDIF
WEND

A 回答 (4件)

バカ正直に、画像が出たのを見てクリックしに行くと、切り替わる前にまた見つけてクリックして…という動作になってしまい、クリック連打となります。

なので今がどっちの画像を待っているかを示すフラグを用意して、そのフラグが立っていなければクリックしに行かないような流れにしないと、うまくいきません。と言うことを踏まえたスクリプトの例がこれです。なお動作テストはしていないので、ダメだったらごめんなさい(←おいおい!)

//--------
// A待ちとB待ちのフラグを両方とも立てておく。
// こうすれば、スクリプトが実行された時にA,Bどっちが表示されていても正常動作する
//--------
A_WAIT=True
B_WAIT=True
//--------
// ループ
//--------
While True
  //--------
  // 画像A.bmpが見つかって、かつA待ちフラグが立っている時だけ条件成立
  //--------
  Ifb ChkImg("A.bmp",0) And A_WAIT
    BTN(LEFT,CLICK,G_IMG_X+5,G_IMG_Y+5,80)
    //--------
    // A待ちフラグを落としてB待ちフラグを立てる
    //--------
    A_WAIT=False
    B_WAIT=True
  EndIf
  //--------
  // 画像B.bmpが見つかって、かつB待ちフラグが立っている時だけ条件成立
  //--------
  Ifb ChkImg("B.bmp",0) And B_WAIT
    BTN(LEFT,CLICK,G_IMG_X+5,G_IMG_Y+5,80)
    //--------
    // A待ちフラグを立ててB待ちフラグを落とす
    //--------
    A_WAIT=True
    B_WAIT=False
  EndIf
Wend

ところで、これと全く同じ質問をこの後にやっていますが、そちらは削除してください。思いっきりマルチポストだし、またすでに回答してくれた人がそれを見たら「何だよ、俺の回答が信じられないのか?」って思われますよ?これって非常に失礼な行為です。
    • good
    • 0
この回答へのお礼

思ったようにうまくいきました
ありがとうございました

お礼日時:2011/08/10 23:09

No.1です。



他人のプログラムにケチを付けるのは好きではありませんが、
確かに5秒も待てば、以前の画像から切り替わっているのでしょう。
5秒待って、ただ画像をクリックしているだけのプログラムです。
判定文など何の役にも立っていません。(常にどちらかの画像が表示され、常に同じ箇所をクリックするのならばですが)

もちろん、私はプログラミングとは自分で楽しむものだと思っているので、ご自身で悩んで解決なされてください。

でも、もう少しすれば答えを書いてくれる優しい人が現れるかもしれませんけどね。
    • good
    • 0
この回答へのお礼

画像は常にBでAになったときに1回、Bに戻ったときに1回だけクリックさせたいんです
自分の説明不足でしたね・・・
もう少し自分で頑張ってみます

お礼日時:2011/08/08 20:42

While True



 //画像Aであればクリック
 Ifb ChkImg("A.bmp",0)
 BTN(LEFT,CLICK,G_IMG_X+5,G_IMG_Y+5,80)
 ENDIF

 //画像Bであればクリック
 Ifb ChkImg("B.bmp",0)
 BTN(LEFT,CLICK,G_IMG_X+5,G_IMG_Y+5,80)
 ENDIF

 //時間待ち5秒
 SLEEP(5) 


WEND
    • good
    • 0
この回答へのお礼

ありがとうございます
少し思っていたものと違った結果になってしましましたが参考にして頑張ってみます

お礼日時:2011/08/08 20:44

よくわかりませんが、



ChkImg("B.bmp",0)

が、ただチェックするだけで、B.bmpに切り替わるまで待つ関数ではないから、だと思うのですが。
違っていたら、済みません。
    • good
    • 0
この回答へのお礼

ありがとうございます
そこの箇所をifb chkimgにしてもうまくいきませんでした・・・
もう少し試行錯誤してみます

お礼日時:2011/08/08 20:33

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