while 1
if CHKIMG("gazou/A.bmp",-1,,,,) > 0 then break
wend

で画面上にAという画像は認識した後、
その少し左隣にあるBという画像を認識したいのですが上手くいきません

while 1
if CHKIMG("gazou/B.bmp",-1,G_IMG_X-24,G_IMG_Y-7,G_IMG_X-1,G_IMG_Y+24) > 0 then break
wend

という感じでやったらループから帰ってこなくなりました

座標を
G_IMG_X-24,G_IMG_Y-7,G_IMG_X-1,G_IMG_Y+24
から普通の数字の組み合わせにしたらちゃんと認識できたので
この書き方が間違っているというのはわかるんですが、
どうしてもAの画像の座標から左にずれたこの位置を指定したいのです。
ですが自分はこの書き方以外知らないのです・・・

Aの画像を認識した後に、
そのAの画像があった座標から(X-27,Y-7,X-1,Y+24)ほどずれた位置を指定して
その範囲にB画像があるかどうか確かめるということをするには
どうすればいいのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

ChkImg関数の中でG_IMG_XやYを使うのは、まずそうな予感がします。

内部的に、ChkImg関数を実行した途端、特殊変数が消されてしまうような気がするからです。

なので、画像Aが見つかったところで別の変数にG_IMG_XとYの値を取っておき、それを使うようにすれば動くでしょう。

//----------
//画像Aを待つループ
//----------
While True
  If ChkImg("gazou/A.bmp",-1) Then Break
Wend
//----------
//画像Aを見つけた座標を保存する
//----------
last_x=G_IMG_X
last_y=G_IMG_Y
//----------
//画像Bを待つループ
//----------
While True
  If ChkImg("gazou/B.bmp",-1,last_x-24,G_last_y-7,last_x-1,last_y+24) Then Break
Wend
    • good
    • 0
この回答へのお礼

そのやり方でやってみたら出来ました!

ありがとうございました!

お礼日時:2011/04/09 12:44

if CHKIMG("gazou/B.bmp",-1,(G_IMG_X-24),(G_IMG_Y-7),(G_IMG_X-1),(G_IMG_Y+24))



計算式を入れずに、括弧を付けて前もって計算した結果を入れてはだめですか?
当方、これで上手くいきました。
    • good
    • 0
この回答へのお礼

ううむ、試してみたのですが自分はうまくいきませんでした・・・
前もって計算した結果、というのは前にまた別の式が必要だったのでしょうか?

回答ありがとうございました

お礼日時:2011/04/09 12:43

このQ&Aに関連する人気のQ&A

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


人気Q&Aランキング