全てのキーの入力状態を取得する

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

全てのキーの入力状態を取得する

#1

投稿記事 by surach » 2年前

このサイトでゲームプログラミングを勉強させていただいてます。2.9章の内容で質問なんですが、メイン関数内のwhile(gpUpdateKey()==0 )というのはループするごとに最初にgpUpdateKey関数を呼び出しているという理解でいいのでしょうか?

コード:

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

アバター
purin52002
記事: 235
登録日時: 2年前
連絡を取る:

Re: 全てのキーの入力状態を取得する

#2

投稿記事 by purin52002 » 2年前

その解釈でいいと思います。引き続きがんばってください^^
オフトピック
正確にはループするごとにScreenFlip()、ProcessMessage()、 ClearDrawScreen()、 gpUpdateKey()の順に呼び出しています。
c++初心者を自負しています。
質問者さんには今後私にプログラミングを教えてくれるようにやさしく丁寧に教えるつもりです。ぎぶあんどていく^p^
回答者さんには精一杯感謝します。ぎぶおんりー^p^

surach
記事: 21
登録日時: 2年前

Re: 全てのキーの入力状態を取得する

#3

投稿記事 by surach » 2年前

ScreenFlip()、ProcessMessage()、 ClearDrawScreen()、 gpUpdateKey()の順に呼び出しているんですね。納得いきました!
早い対応どうもありがとうございます(*- -)(*_ _)ペコリ

返信

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