マウスで指定の四角がクリックされたかを感知するプログラムを作りたいのですが、
判定する時に渡された四角の座標の内、右下のX,Y座標から1引くべきでしょうか?
確かDXライブラリのDRAWBOXなどの関数は1引かれていましたよね?(うろ覚え)
仮に下の方法で計算するとした場合、上の関数より下の関数にしたほうがいいでしょうか?
それともDrawBoxなどに判定をつける時のみ引数として数を渡すときに自分で1引くようにするべきでしょうか?
//指定された場所がマウスでクリックされたかどうかチェックする (0 接触なし、1 接触開始、2 接触中、3 クリック開始、4 クリック中
int ClickBox(int x1, int y1, int x2, int y2, int draw_color) {
if (draw_color != 0) DrawBox_(x1, y1, x2, y2, draw_color, FALSE);
if (mouse_x >= x1 && mouse_x <= x2 && mouse_y >= y1 && mouse_y <= y2) {
if (draw_color != 0) DrawBox_(x1, y1, x2, y2, col.p_blue, FALSE);
if (mouse_xx < x1 || mouse_xx > x2 || mouse_yy < y1 || mouse_yy > y2) return 1;
if (GetMouse(MOUSE_LEFT) == 1) return 3; //クリック開始
if (GetMouse(MOUSE_LEFT) > 1) return 4; //クリック中
return 2; //接触中
}
return 0;
}
//指定された場所がマウスでクリックされたかどうかチェックする (0 接触なし、1 接触開始、2 接触中、3 クリック開始、4 クリック中
int ClickBox(int x1, int y1, int x2, int y2, int draw_color) {
x2--;//ここと
y2--;//ここを追加すべきか
if (draw_color != 0) DrawBox_(x1, y1, x2, y2, draw_color, FALSE);
if (mouse_x >= x1 && mouse_x <= x2 && mouse_y >= y1 && mouse_y <= y2) {
if (draw_color != 0) DrawBox_(x1, y1, x2, y2, col.p_blue, FALSE);
if (mouse_xx < x1 || mouse_xx > x2 || mouse_yy < y1 || mouse_yy > y2) return 1;
if (GetMouse(MOUSE_LEFT) == 1) return 3; //クリック開始
if (GetMouse(MOUSE_LEFT) > 1) return 4; //クリック中
return 2; //接触中
}
return 0;
}