アットウィキロゴ
TNP資料室 @ ウィキ
掲示板 掲示板 ページ検索 ページ検索 メニュー メニュー

TNP資料室 @ ウィキ

キーボードの押下時間を調べる関数を作る

最終更新:

kokeiro

- view
だれでも歓迎! 編集
つまり、コピペです。

other.cpp

void GetKeyInput( int *KeyBuf ){
	char damy[256];
	GetHitKeyStateAll( damy ) ;
	for( int i=0 ; i<256 ; i++ ){
		if( damy[i] == 1 )
			KeyBuf[i]++;
		else
			KeyBuf[i] = 0;
	}
}

 この関数で取得したキーボードの押下時間というのは、さまざまな関数、さまざまなソースファイルから呼び出されることになります。そこで、キーボードの押下時間を保持した変数をグローバル変数?として使いたいと思います。マクロ定義?をうまく用いると変数の宣言と外部変数の宣言をきれいに書くことが出来るのですが、解説が面倒くさいのでここではマクロ定義を用いない方法をとります(キリッ

 ソースフォルダに今までと同じように「global」ソースファイルを『sorce』に追加してください。
 ヘッダーフォルダにも「global」ヘッダーファイルを『sorce』に追加してください。

 以下のように書き足してください。

global.cpp

// グローバル変数の実体宣言
int Key[256];

global.h

#ifndef _GLOBAL_H_
#define _GLOBAL_H_

extern int Key[256];

#endif

main.h

...
#include"DxLib.h"
#include"global.h"
...


 これで、全ての関数、ソースファイルでグローバル変数『Key』の値を見ることが出来るようになりました。
MainLoop関数とメイン関数を書き換え、GetKeyInput関数を呼び出すようにします。

main.cpp

#include"main.h"

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
	ChangeWindowMode(TRUE);
	if(DxLib_Init()==-1)
		return 1;
	SetDrawScreen(DX_SCREEN_BACK);

	MainLoop();

	DxLib_End();
	return 0;
}

void MainLoop(){

	while(1){
		if( ProcessMessage() != 0 || CheckHitKey( KEY_INPUT_ESCAPE ) != 0 )
			break;
		ClearDrawScreen();
		GetKeyInput( Key );

		ScreenFlip();
	}
}

この書き換えにより文字すら表示されなくなりました。作成が実感できませんね。

タグ:

+ タグ編集
  • タグ:
最近更新されたスレッド
ウィキ募集バナー