トップページ > 記事閲覧
ボタンのプログラム
名前:にこよん 日時: 2018/01/10 18:54

マウスで指定の四角がクリックされたかを感知するプログラムを作りたいのですが、 判定する時に渡された四角の座標の内、右下の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; }
メンテ

Page: 1 |

Re: ボタンのプログラム ( No.1 )
名前:にこよん 日時:2018/01/10 21:48

追加で質問なんですが... int ClickBox(int x1, int y1, int x2, int y2, int draw_color = 0); //指定された場所がマウスでクリックされたかどうかチェックする (0 接触なし、1 接触開始、2 接触中、3 クリック開始、4 クリック中 ヘッダファイルに↑のように定義を書き込んでも関数にマウスを当てた時ヒントとしてコメントが表示されなくなったのですが、何か表示されるようにする方法はありますか? //指定された場所がマウスでクリックされたかどうかチェックする (0 接触なし、1 接触開始、2 接触中、3 クリック開始、4 クリック中 int ClickBox(int x1, int y1, int x2, int y2, int draw_color = 0); 一応↑のように書くと表示されるのですができれば一つ目の書き方で表示されるようにしたいです
メンテ
Re: ボタンのプログラム ( No.2 )
名前:管理人 日時:2018/01/11 01:16

> 仮に下の方法で計算するとした場合、上の関数より下の関数にしたほうがいいでしょうか? > それともDrawBoxなどに判定をつける時のみ引数として数を渡すときに自分で1引くようにするべきでしょうか? 『下の関数にしたほうがいい』と思います ただ、DrawBox_ という関数が DrawBox を呼ぶ関数でしたら、ここでは1引いた分だけ足す必要があります int ClickBox(int x1, int y1, int x2, int y2, int draw_color) { x2--;//ここと y2--;//ここを追加すべきか if (draw_color != 0) DrawBox_(x1, y1, x2 + 1, y2 + 1, draw_color, FALSE); if (mouse_x >= x1 && mouse_x <= x2 && mouse_y >= y1 && mouse_y <= y2) { if (draw_color != 0) DrawBox_(x1, y1, x2 + 1, y2 + 1, 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; } > ヘッダファイルに↑のように定義を書き込んでも関数にマウスを当てた時ヒントとしてコメントが表示されなくなったのですが、何か表示されるようにする方法はありますか? すみません、『自動で表示されるヒント』については詳しくないので『表示できるようにする方法』があるのかどうかわかりません
メンテ
Re: ボタンのプログラム ( No.3 )
名前:yumetodo 日時:2018/01/11 14:32

>ヘッダファイルに↑のように定義を書き込んでも関数にマウスを当てた時ヒントとしてコメントが表示されなくなったのですが、 >何か表示されるようにする方法はありますか? 直前のコメントを見るので、同じ行にコメント書くのをやめましょう。ついでにdoxygenスタイルでコメントを書くと可読性とメンテナンス性も上がってよし。
メンテ
Re: ボタンのプログラム ( No.4 )
名前:にこよん 日時:2018/01/11 17:35

>『下の関数にしたほうがいい』と思います >ただ、DrawBox_ という関数が DrawBox を呼ぶ関数でしたら、ここでは1引いた分だけ足す必要があります ありがとうございます1引くようにしておきます DrawBoxは完全に見落としていました、ありがとうございます > 直前のコメントを見るので、同じ行にコメント書くのをやめましょう。ついでにdoxygenスタイルでコメントを書くと可読性とメンテナンス性も上がってよし。 普段のプログラムでは直前に書くのですが、すべてのゲームで併用して使っている自作ゲームライブラリ(DXライブラリのアレンジ版) のヘッダファイルを描くときだけ、関数量が多く、一つの関数の定義でコメントも含め2行消費していると 全ての関数を見返すときに見ずらいのでDXlib.hのように書きたいのです ですがだいぶん前のアップデートよりこの書き方ではヒントとして表示されなくなってしまったので できる方法がないかなーと... doxygenは...もっと大きいゲームを作るようになった時に考えます...(今は関数は覚えれる程普度しか書かない)
メンテ
Re: ボタンのプログラム ( No.5 )
名前:yumetodo 日時:2018/01/12 00:00

>全ての関数を見返すときに見ずらいのでDXlib.hのように書きたいのです それはヘッダーファイルがでかすぎます。ファイル分けが不十分なのでは?それをコメントを同じ行に書くことで解決しようとするのは筋が違うように思います (余談ですが、そもそもDxLib.hはでかすぎるので個人的にはあれを30分割くらいしてくれないと読めない)
メンテ
Re: ボタンのプログラム ( No.6 )
名前:にこよん (解決) 日時:2018/01/13 17:14

そうかもしれませんね... まぁ今はこのままにしておきます
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存