マウスの1フレームクリックについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
sadora3
記事: 175
登録日時: 11年前

マウスの1フレームクリックについて

#1

投稿記事 by sadora3 » 8年前

DXライブラリのマウスのクリックについての質問なのですが、以下のようなプログラムで1フレームだけクリックを反応させることは出来るのですが、マウスのクリックの処理が必要になるたびに、

コード:

if(GetMouseInput() & MOUSE_INPUT_LEFT){
	if(!ClickFlag){
		ClickFlag = true;
		//やりたい処理
	}
}else{
	ClickFlag = false;
}
のように長いコードを書かなくてはいけないのが非常に面倒です。
このクリック処理は関数化などで綺麗にしたいのですが、どうすればいいのでしょうか?
説明が下手ですみません。

つまり上の長いコードを

コード:

if(マウス左クリック){
	//やりたい処理
}
のようにしたいのです。
よろしくお願いします。

OS:Windows7 32bit
コンパイラ:VisualStudio2010
言語:C
ライブラリ:DXライブラリ

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: マウスの1フレームクリックについて

#2

投稿記事 by softya(ソフト屋) » 8年前

ゲームプログラミングの館のキー処理が応用できます。
http://dixq.net/g/02_09.html
「ゲームプログラミングの館」をよく見てると応用が効くものが多数ありますよ。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

sadora3
記事: 175
登録日時: 11年前

Re: マウスの1フレームクリックについて

#3

投稿記事 by sadora3 » 8年前

おお、こんな簡単に出来るとは。
ソフト屋さんにはいつもお世話になっております。大変感謝です。
以下のようになりました。ありがとうございました。

コード:

#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;
}


閉鎖

“C言語何でも質問掲示板” へ戻る