龍神録2章のKeyについて
Posted: 2009年8月05日(水) 11:47
はじめまして、2章のプログラムのKeyの所がよくわからなかったので質問しました。
//GetHitKeyStateAll_2という自作関数を作成
int GetHitKeyStateAll_2(int GetHitKeyStateAll_InputKey[/url]){
char GetHitKeyStateAll_Key[256]; //char型のGetHitKeyStateAll_Key配列を作成
GetHitKeyStateAll( GetHitKeyStateAll_Key ); //GetHitStateAll関数にGetHitKeyStateAll_Key配列を渡すことにより、
//GetHitKeyStateAll_Key配列[/url]の中にはKEY_INPUT_ESCAPE等
//全てのキーの入力状態(0か1)が入っている
for(int i=0;i<256;i++){ //↓押されているキーがある場合は引数GetHitKeyStateAll_InputKey[/url]に1足す
if(GetHitKeyStateAll_Key==1) GetHitKeyStateAll_InputKey++;
else GetHitKeyStateAll_InputKey=0; //何も押されてなければ引数は0になる
}
return 0;
}
↑ここはコメントに書いているような理解で正しいですか?
また、
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode(TRUE);//ウィンドウモード
if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){
//↑メッセージ処理 ↑画面をクリア ↑入力状態を保存 ↑ESCが押されていない
というコードで、コメントに入力状態を保存と書いてありますが、どういうことなのでしょうか・・・?
自分なりに理解しようとしたところ、例えばキーが4つ押されていればGetHitKeyStateAll_2(Key)の
引数Keyに4という数字が入るのでwhile文は実行されないということだと思いました。
また、このような処理は何のために行うのでしょうか?実行したときに何かキーが押されていた場合実行できないようにするためなのでしょうか?もしそうなのであれば、なぜその処理を行う必要があるのでしょうか?・・・
まだプログラミングを始めたばかりなので、初歩的な質問ですが教えていただけるとうれしいです。
//GetHitKeyStateAll_2という自作関数を作成
int GetHitKeyStateAll_2(int GetHitKeyStateAll_InputKey[/url]){
char GetHitKeyStateAll_Key[256]; //char型のGetHitKeyStateAll_Key配列を作成
GetHitKeyStateAll( GetHitKeyStateAll_Key ); //GetHitStateAll関数にGetHitKeyStateAll_Key配列を渡すことにより、
//GetHitKeyStateAll_Key配列[/url]の中にはKEY_INPUT_ESCAPE等
//全てのキーの入力状態(0か1)が入っている
for(int i=0;i<256;i++){ //↓押されているキーがある場合は引数GetHitKeyStateAll_InputKey[/url]に1足す
if(GetHitKeyStateAll_Key==1) GetHitKeyStateAll_InputKey++;
else GetHitKeyStateAll_InputKey=0; //何も押されてなければ引数は0になる
}
return 0;
}
↑ここはコメントに書いているような理解で正しいですか?
また、
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode(TRUE);//ウィンドウモード
if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){
//↑メッセージ処理 ↑画面をクリア ↑入力状態を保存 ↑ESCが押されていない
というコードで、コメントに入力状態を保存と書いてありますが、どういうことなのでしょうか・・・?
自分なりに理解しようとしたところ、例えばキーが4つ押されていればGetHitKeyStateAll_2(Key)の
引数Keyに4という数字が入るのでwhile文は実行されないということだと思いました。
また、このような処理は何のために行うのでしょうか?実行したときに何かキーが押されていた場合実行できないようにするためなのでしょうか?もしそうなのであれば、なぜその処理を行う必要があるのでしょうか?・・・
まだプログラミングを始めたばかりなので、初歩的な質問ですが教えていただけるとうれしいです。