DXライブラリ GetHitKeyStateAll について
Posted: 2019年3月03日(日) 01:21
プログラム初心者です。レベルが低い質問になると思いますが、調べても理解できなかったことがあるので質問させていただきます。
当サイト2.9章 全てのキーの入力状態を取得する の内容で、
というプログラムの10行目 if( tmpKey != 0 ) の条件式を tmpkey = 1 にすると右キーを押しても反応せず、最初の位置も変わりました。
GetHitKeyStateAll関数での()の中身は押されていたら1、押されていなければ0なので != 0 も = 1 も同じような気がするんですが、なぜ上手くいかないんでしょうか?
当サイト2.9章 全てのキーの入力状態を取得する の内容で、
#include "DxLib.h"
int Key[256]; // キーが押されているフレーム数を格納する
// キーの入力状態を更新する
int gpUpdateKey(){
char tmpKey[256]; // 現在のキーの入力状態を格納する
GetHitKeyStateAll( tmpKey ); // 全てのキーの入力状態を得る
for( int i=0; i<256; i++ ){
if( tmpKey[i] != 0 ){ // i番のキーコードに対応するキーが押されていたら
Key[i]++; // 加算
} else { // 押されていなければ
Key[i] = 0; // 0にする
}
}
return 0;
}
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK ); //ウィンドウモード変更と初期化と裏画面設定
int x=0;
// while(裏画面を表画面に反映, メッセージ処理, 画面クリア, キーの状態更新)
while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 && gpUpdateKey()==0 ){
DrawFormatString( x, 0, GetColor(255,255,255), "?!" ); // x,0 の位置に白で ?! を描画
if( Key[KEY_INPUT_RIGHT] == 1 ){ // 右キーが押された瞬間なら
x = x + 50; // xを50加算
}
}
DxLib_End(); // DXライブラリ終了処理
return 0;
}
GetHitKeyStateAll関数での()の中身は押されていたら1、押されていなければ0なので != 0 も = 1 も同じような気がするんですが、なぜ上手くいかないんでしょうか?