ページ 1 / 1
マウスの1フレームクリックについて
Posted: 2015年10月04日(日) 16:17
by sadora3
DXライブラリのマウスのクリックについての質問なのですが、以下のようなプログラムで1フレームだけクリックを反応させることは出来るのですが、マウスのクリックの処理が必要になるたびに、
コード:
if(GetMouseInput() & MOUSE_INPUT_LEFT){
if(!ClickFlag){
ClickFlag = true;
//やりたい処理
}
}else{
ClickFlag = false;
}
のように長いコードを書かなくてはいけないのが非常に面倒です。
このクリック処理は関数化などで綺麗にしたいのですが、どうすればいいのでしょうか?
説明が下手ですみません。
つまり上の長いコードを
コード:
if(マウス左クリック){
//やりたい処理
}
のようにしたいのです。
よろしくお願いします。
OS:Windows7 32bit
コンパイラ:VisualStudio2010
言語:C
ライブラリ:DXライブラリ
Re: マウスの1フレームクリックについて
Posted: 2015年10月04日(日) 16:33
by softya(ソフト屋)
ゲームプログラミングの館のキー処理が応用できます。
http://dixq.net/g/02_09.html
「ゲームプログラミングの館」をよく見てると応用が効くものが多数ありますよ。
Re: マウスの1フレームクリックについて
Posted: 2015年10月04日(日) 18:38
by sadora3
おお、こんな簡単に出来るとは。
ソフト屋さんにはいつもお世話になっております。大変感謝です。
以下のようになりました。ありがとうございました。
コード:
#include"DxLib.h"
int MouseInput = 0;
void MouseFrameInput(){
if((GetMouseInput() & MOUSE_INPUT_LEFT)){
MouseInput++;
}else{
MouseInput = 0;
}
}
int ProcessLoop(){
if(ProcessMessage() != 0){ return 0; }
if(ClearDrawScreen() != 0){ return 0; }
return 1;
}
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int){
int BoxPosX = 200;
int BoxPosY = 200;
int BoxSize = 100;
ChangeWindowMode(TRUE);
if(DxLib_Init() == -1 || SetDrawScreen(DX_SCREEN_BACK) != 0){ return -1; }
while(ProcessLoop() && !CheckHitKey(KEY_INPUT_ESCAPE)){
MouseFrameInput();
if(MouseInput == 1){
BoxPosX += 10;
}
DrawBox(BoxPosX - BoxSize / 2, BoxPosY - BoxSize / 2, BoxPosX + BoxSize / 2, BoxPosY + BoxSize / 2, GetColor(255,255,255), FALSE);
ScreenFlip();
}
DxLib_End();
return 0;
}