CheckHitKey関数は🌞実行されるずき匕数に䞎えられたキヌが抌されおいる🌞ず戻り倀ずしお1が返されたす

マックス「普通のゲヌムでは


あるキヌを抌すず


プログラムの実行が終了


぀たり


ゲヌムが終了したりするだろう


俺はそれができるようにしたいんだよ


ゲヌム画面に飛行機が飛んでいる途䞭でも


あるキヌを抌すず


プログラムの実行が終了するようにできないか」


゜ヌラヌ「なるほど・・・


ただ ゲヌム画面に飛行機を飛ばしおいるだけの今の段階で


もうそこたで考えおいるのか・・・


そうだね


その堎合は


CheckHitKey関数を甚いるこずになりたす」


solarplexuss「CheckHitKey関数


なにそれ」


゜ヌラヌ「


CheckHitKey関数が実行されたずき


CheckHitKey関数の匕数に䞎えられたキヌが抌されおいるならば


CheckHitKey関数には


戻り倀ずしお1が返されるこずになりたす


CheckHitKey関数が実行されたずき


CheckHitKey関数の匕数に䞎えられたキヌが抌されおいないならば


CheckHitKey関数には


戻り倀ずしお0が返されるこずになりたす


WaitKey関数ず違っお


CheckHitKey関数が実行されおも


CheckHitKey関数に


戻り倀ずしお


0

か

1


が返されるだけで


プログラムの実行が止たったりするこずはありたせん」



solarplexuss「


CheckHitKey関数が実行されたずき


CheckHitKey関数の匕数に䞎えられたキヌが抌されおいるならば


CheckHitKey関数には


戻り倀ずしお1が返されるこずになりたす


・・・っお


うん


そもそも


CheckHitKey関数の匕数に䞎えられたキヌ


っお䜕のこず」


゜ヌラヌ「そうだね


CheckHitKey関数は


CheckHitKey(KEY_INPUT_ESCAPE);


のように


実行したす


CheckHitKey関数の匕数郚分に


KEY_INPUT_ESCAPE


が


蚘述されおいたすね


KEY_INPUT_ESCAPEは実は敎数倀デヌタなんですが


KEY_INPUT_ESCAPEはEscキヌに察応しおいたす


CheckHitKey(KEY_INPUT_ESCAPE);


が実行されるずき



Escキヌが抌されおいるず


CheckHitKey(KEY_INPUT_ESCAPE)


には


戻り倀ずしお


1が返されるこずになりたす


Escキヌが抌されおいないず


CheckHitKey(KEY_INPUT_ESCAPE)


には


戻り倀ずしお


0が返されるこずになりたす


たあ


ずりあえず


CheckHitKey(KEY_INPUT_ESCAPE);


を実行しおみよっかな(*Ž▜*)」


そのプログラムはこちらです

👇

#include "DxLib.h"


int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

{



ChangeWindowMode(TRUE); // りむンドりモヌドに蚭定したす


if (DxLib_Init() == -1) // ラむブラリを初期化凊理しおいたす

{

return -1; // ラむブラリの初期化に倱敗したら盎ちにプログラムを終了したす

}


int graphichandle;


graphichandle = LoadGraph("画像デヌタ\\゜ヌラヌが描いた飛行機.bmp");



CheckHitKey(KEY_INPUT_ESCAPE);//👈🌞ここです CheckHitKey関数です


DrawBox(100, 100, 500, 300, GetColor(0, 255, 255), TRUE);


WaitKey();


DxLib_End(); // ラむブラリの䜿甚を終了したす ラむブラリの䜿甚しおいるメモリ領域が解攟されたす


return 0; // プログラムを終了したす

}


デバッグなしで実行をしおから䞀床プログラムを終了し

生成されたexeファむルをハヌドディスクから探し出しクリックする方法により埗られたプログラムの実行結果はこちらです

👇

https://solalion.blogspot.com/2021/08/blog-post_12.html




マックス「青い四角圢が衚瀺されたか


ずいうこずは


CheckHitKey(KEY_INPUT_ESCAPE);


が実行されたあず


DrawBox(100, 100, 500, 300, GetColor(0, 255, 255), TRUE);


が


実行されたずいうこずか・・・


CheckHitKey(KEY_INPUT_ESCAPE);


は実行されおいるようだな


だが


これだず


CheckHitKey(KEY_INPUT_ESCAPE);


が実行されたずき


CheckHitKey(KEY_INPUT_ESCAPE)


に


戻り倀ずしお


0

が返っおいるのか

1

が返っおいるのか


分からないな」


゜ヌラヌ「それもそうですね


では


CheckHitKey(KEY_INPUT_ESCAPE)


に


戻り倀ずしお


0

が

返っおいる堎合は


癜い四角圢が衚瀺され


戻り倀ずしお


1

が

返っおいる堎合は


青い四角圢が衚瀺されるようにしおみたしょう」


そのプログラムはこちらです

👇

#include "DxLib.h"


int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

{



ChangeWindowMode(TRUE); // りむンドりモヌドに蚭定したす


if (DxLib_Init() == -1) // ラむブラリを初期化凊理しおいたす

{

return -1; // ラむブラリの初期化に倱敗したら盎ちにプログラムを終了したす

}


int graphichandle;


graphichandle = LoadGraph("画像デヌタ\\゜ヌラヌが描いた飛行機.bmp");



CheckHitKey(KEY_INPUT_ESCAPE);


if (CheckHitKey(KEY_INPUT_ESCAPE) == 0) {


DrawBox(100, 100, 500, 300, GetColor(255,255,255), TRUE);//🌞癜い四角圢が衚瀺されたす

}



if (CheckHitKey(KEY_INPUT_ESCAPE) == 1) {


DrawBox(100, 100, 500, 300, GetColor(0, 255, 255), TRUE);//🌞青い四角圢が衚瀺されたす

}



WaitKey();


DxLib_End(); // ラむブラリの䜿甚を終了したす ラむブラリの䜿甚しおいるメモリ領域が解攟されたす


return 0; // プログラムを終了したす

}


デバッグなしで実行をしおから䞀床プログラムを終了し

生成されたexeファむルをハヌドディスクから探し出しクリックする方法により埗られたプログラムの実行結果はこちらです

👇


https://solalion.blogspot.com/2021/08/blog-post_6.html



マックス「おっ


癜い四角圢が衚瀺されたか


ずいうこずは


CheckHitKey(KEY_INPUT_ESCAPE);


が実行されお


CheckHitKey(KEY_INPUT_ESCAPE)には


戻り倀ずしお


0が返ったずいうこずか」


solarplexuss「」


マックス「぀たり


Escキヌを抌しおいないので


CheckHitKey(KEY_INPUT_ESCAPE)に


戻り倀ずしお


0が返ったわけだ


なので



if (CheckHitKey(KEY_INPUT_ESCAPE) == 0) {


DrawBox(100, 100, 500, 300, GetColor(255,255,255), TRUE);


}


の

論理匏

CheckHitKey(KEY_INPUT_ESCAPE) == 0


は

論理匏

0==0


をあらわすこずになり


論理匏

0==0


は


1(真)


の倀を持぀ので


if (CheckHitKey(KEY_INPUT_ESCAPE) == 0) {


DrawBox(100, 100, 500, 300, GetColor(255,255,255), TRUE);


}


内の


DrawBox(100, 100, 500, 300, GetColor(255,255,255), TRUE);


が実行されお


癜い四角圢が衚瀺されたずいうわけだな(^^♪」


solarplexuss「なるほどお」


マックス「


if (CheckHitKey(KEY_INPUT_ESCAPE) == 0) {


DrawBox(100, 100, 500, 300, GetColor(255,255,255), TRUE);


}


の実行の


次に


if (CheckHitKey(KEY_INPUT_ESCAPE) == 1) {


DrawBox(100, 100, 500, 300, GetColor(0,255,255), TRUE);


}


が実行されるが


CheckHitKey(KEY_INPUT_ESCAPE)には


戻り倀ずしお


0が返っっおいるので


論理匏

CheckHitKey(KEY_INPUT_ESCAPE) == 1


は


論理匏

0==1


をあらわすこずになり


論理匏

0==1


は


0(停)


の倀を持぀ので


if (CheckHitKey(KEY_INPUT_ESCAPE) == 1) {


DrawBox(100, 100, 500, 300, GetColor(,255,255), TRUE);


}


内の


DrawBox(100, 100, 500, 300, GetColor(0,255,255), TRUE);


は


実行されないので


青い四角圢が衚瀺されるこずはないわけだ


ふむ


CheckHitKey(KEY_INPUT_ESCAPE)に


戻り倀ずしお

0

が返っおいるか

1

が返っおいるか


が刀断する方法を


うたい具合にかんがえたな


それにしおも


CheckHitKey(KEY_INPUT_ESCAPE);


が実行されるずき


Escキヌが抌されおいるず


CheckHitKey(KEY_INPUT_ESCAPE)


は戻り倀ずしお


1が返されるこずになりたす


Escキヌが抌されおいないず


CheckHitKey(KEY_INPUT_ESCAPE)


は戻り倀ずしお


0が返されるこずになりたす


か・・・


でも これ


なんか


埮劙な蚀い方じゃないか



CheckHitKey(KEY_INPUT_ESCAPE);


が実行されるずき


Escキヌが抌されおいるず


CheckHitKey(KEY_INPUT_ESCAPE)


は戻り倀ずしお


1が返されるこずになりたす


ずいっおも


プログラムの実行は


瞬で終わっおしたうので


プログラムを実行しおから


Escキヌ


を


抌すなんお間に合わないんじゃないか


だから


CheckHitKey(KEY_INPUT_ESCAPE)


に戻り倀ずしお


1が返されるようにするこずはできないんじゃないか」


solarplexuss「あっ


本圓だ


そうだよね」


゜ヌラヌ「いいずころに気づいたね


その通り


プログラムの実行は


瞬で終わっおしたうので


もちろん


CheckHitKey(KEY_INPUT_ESCAPE);


の実行も1瞬で終わっおしたいたす


ですので


プログラムの実行が始たっおから


Escキヌ


を


抌したずしおも


ほが確実に


すでに


CheckHitKey(KEY_INPUT_ESCAPE);


の実行は終了しおいるので


CheckHitKey(KEY_INPUT_ESCAPE)


に戻り倀ずしお


1が返されるこずはありたせん」


solarplexuss「ほええ


じゃあ


CheckHitKey(KEY_INPUT_ESCAPE)


に戻り倀ずしお


1


が返されるようにするには


プログラムが開始されおから


CheckHitKey(KEY_INPUT_ESCAPE);


が実行されるたでに


0.1秒かかるずするず


CheckHitKey(KEY_INPUT_ESCAPE);


が実行される前に


぀たり


0.1秒以内に


Escキヌ


を


抌しおおかないずいけないずいうこず」


゜ヌラヌ「ピンポン


その通りです」


マックス「そんなに超高速で


Escキヌ


を抌せるか


普通


絶察 無理だろう」


゜ヌラヌ「ぞぞっ


実は


CheckHitKey(KEY_INPUT_ESCAPE)


に戻り倀ずしお


1


が返されるようにするのは簡単です


CheckHitKey(KEY_INPUT_ESCAPE);


が実行されるたでに


Escキヌ


を


抌しおおけば


CheckHitKey(KEY_INPUT_ESCAPE)


に戻り倀ずしお


1


が返されるのならば


プログラムが始たる前から


Escキヌ


を


ずっず


抌しおおけば


CheckHitKey(KEY_INPUT_ESCAPE)


に戻り倀ずしお


1


が返されるんだよ」


マックス「なあにぃぃ


そういう手があったか」



゜ヌラヌ「では みなさん



 再び 



CheckHitKey(KEY_INPUT_ESCAPE)


に


戻り倀ずしお


0

が

返っおいる堎合は


癜い四角圢が衚瀺され


戻り倀ずしお


1

が

返っおいる堎合は


青い四角圢が衚瀺されるプログラムを実行しおみたしょう


今床は


         🌞Escキヌをおしながら🌞


次のプログラムを実行しおね


👇

#include "DxLib.h"


int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

{



ChangeWindowMode(TRUE); // りむンドりモヌドに蚭定したす


if (DxLib_Init() == -1) // ラむブラリを初期化凊理しおいたす

{

return -1; // ラむブラリの初期化に倱敗したら盎ちにプログラムを終了したす

}


int graphichandle;


graphichandle = LoadGraph("画像デヌタ\\゜ヌラヌが描いた飛行機.bmp");



CheckHitKey(KEY_INPUT_ESCAPE);


if (CheckHitKey(KEY_INPUT_ESCAPE) == 0) {


DrawBox(100, 100, 500, 300, GetColor(255,255,255), TRUE);


}



if (CheckHitKey(KEY_INPUT_ESCAPE) == 1) {


DrawBox(100, 100, 500, 300, GetColor(0, 255, 255), TRUE);


}



WaitKey();


DxLib_End(); // ラむブラリの䜿甚を終了したす ラむブラリの䜿甚しおいるメモリ領域が解攟されたす


return 0; // プログラムを終了したす

}


デバッグなしで実行をしおから䞀床プログラムを終了し

生成されたexeファむルをハヌドディスクから探し出しクリックする方法により埗られたプログラムの実行結果はこちらです

👇

https://solalion.blogspot.com/2021/08/blog-post_51.html



マックス「あっ、青い四角圢が衚瀺された


         🌞Escキヌをおしながら🌞


プログラムを実行したため


CheckHitKey(KEY_INPUT_ESCAPE);


の実行時には


Escキヌは抌されおいたずいうわけだ


だから


CheckHitKey(KEY_INPUT_ESCAPE);


が実行されたずき


CheckHitKey(KEY_INPUT_ESCAPE)には


戻り倀ずしお


1が返される


するず


if (CheckHitKey(KEY_INPUT_ESCAPE) ==0) {


DrawBox(100, 100, 500, 300, GetColor(255,255,255), TRUE);


}


の

論理匏

CheckHitKey(KEY_INPUT_ESCAPE) == 0


は

論理匏

1==0


をあらわすこずになり


論理匏

1==0


は


0(停)


の倀を持぀ので


if (CheckHitKey(KEY_INPUT_ESCAPE) == 0) {


DrawBox(100, 100, 500, 300, GetColor(255,255,255), TRUE);


}


内の


DrawBox(100, 100, 500, 300, GetColor(255,255,255), TRUE);


は実行されないので


癜い四角圢が衚瀺されるこずはない



if (CheckHitKey(KEY_INPUT_ESCAPE) == 0) {


DrawBox(100, 100, 500, 300, GetColor(255,255,255), TRUE);


}


の次に


if (CheckHitKey(KEY_INPUT_ESCAPE) == 1) {


DrawBox(100, 100, 500, 300, GetColor(0,255,255), TRUE);


}


が実行されるが


論理匏

CheckHitKey(KEY_INPUT_ESCAPE) == 1


は


論理匏

1==1


をあらわすこずになり


論理匏

1==1


は


1(真)


の倀を持぀ので


if (CheckHitKey(KEY_INPUT_ESCAPE) == 1) {


DrawBox(100, 100, 500, 300, GetColor(,255,255), TRUE);


}


内の


DrawBox(100, 100, 500, 300, GetColor(0,255,255), TRUE);


が実行されお


青い四角圢が衚瀺されるずいうわけだ(*Ž▜*)」


゜ヌラヌ「そうなんだ(Ž▜)」


solarplexuss「CheckHitKey関数の仕組みがよく分かったね」








🌞  🌞  🌞  🌞  🌞  🌞



DXラむブラリ眮き堎の


関数リファレンスペヌゞでの


CheckHitKey関数の説明は以䞋のようになっおいたす

👇



宣蚀 int CheckHitKey( int KeyCode ) ;


抂略 特定キヌの入力状態を埗る


匕数 KeyCode : 入力状態を取埗するキヌコヌド

戻り倀 抌されおいる

  抌されおいない


解説  特定のキヌの入力状態を埗たす。䟋えば『』キヌの入力状態を調べたい堎合は『CheckHitKey( KEY_INPUT_I )』ずしお関数を呌びたす。

 この『KEY_INPUT_I』はマクロを䜿甚しお定矩したもので、すべおのキヌに察しおこのような遞別子が定矩されおいたす。

 それを以䞋に蚘したす。倚いです


KEY_INPUT_BACK // バックスペヌスキヌ

KEY_INPUT_TAB // タブキヌ

KEY_INPUT_RETURN // ゚ンタヌキヌ


KEY_INPUT_LSHIFT // 巊シフトキヌ

KEY_INPUT_RSHIFT // 右シフトキヌ

KEY_INPUT_LCONTROL // 巊コントロヌルキヌ

KEY_INPUT_RCONTROL // 右コントロヌルキヌ

KEY_INPUT_ESCAPE // ゚スケヌプキヌ

KEY_INPUT_SPACE // スペヌスキヌ

KEY_INPUT_PGUP // キヌ

KEY_INPUT_PGDN // キヌ

KEY_INPUT_END // ゚ンドキヌ

KEY_INPUT_HOME // ホヌムキヌ

KEY_INPUT_LEFT // 巊キヌ

KEY_INPUT_UP // 䞊キヌ

KEY_INPUT_RIGHT // 右キヌ

KEY_INPUT_DOWN // 䞋キヌ

KEY_INPUT_INSERT // むンサヌトキヌ

KEY_INPUT_DELETE // デリヌトキヌ


KEY_INPUT_MINUS // キヌ

KEY_INPUT_YEN // ¥キヌ

KEY_INPUT_PREVTRACK // キヌ

KEY_INPUT_PERIOD // キヌ

KEY_INPUT_SLASH // キヌ

KEY_INPUT_LALT // 巊キヌ

KEY_INPUT_RALT // 右キヌ

KEY_INPUT_SCROLL // ScrollLockキヌ

KEY_INPUT_SEMICOLON // キヌ

KEY_INPUT_COLON // キヌ

KEY_INPUT_LBRACKET // キヌ

KEY_INPUT_RBRACKET // キヌ

KEY_INPUT_AT // キヌ

KEY_INPUT_BACKSLASH // キヌ

KEY_INPUT_COMMA // キヌ

KEY_INPUT_CAPSLOCK // CaspLockキヌ

KEY_INPUT_PAUSE // PauseBreakキヌ


KEY_INPUT_NUMPAD0 // テンキヌ

KEY_INPUT_NUMPAD1 // テンキヌ

KEY_INPUT_NUMPAD2 // テンキヌ

KEY_INPUT_NUMPAD3 // テンキヌ

KEY_INPUT_NUMPAD4 // テンキヌ

KEY_INPUT_NUMPAD5 // テンキヌ

KEY_INPUT_NUMPAD6 // テンキヌ

KEY_INPUT_NUMPAD7 // テンキヌ

KEY_INPUT_NUMPAD8 // テンキヌ

KEY_INPUT_NUMPAD9 // テンキヌ

KEY_INPUT_MULTIPLY // テンキヌキヌ

KEY_INPUT_ADD // テンキヌキヌ

KEY_INPUT_SUBTRACT // テンキヌキヌ

KEY_INPUT_DECIMAL // テンキヌキヌ

KEY_INPUT_DIVIDE // テンキヌキヌ

KEY_INPUT_NUMPADENTER // テンキヌの゚ンタヌキヌ


KEY_INPUT_F1 // キヌ

KEY_INPUT_F2 // キヌ

KEY_INPUT_F3 // キヌ

KEY_INPUT_F4 // キヌ

KEY_INPUT_F5 // キヌ

KEY_INPUT_F6 // キヌ

KEY_INPUT_F7 // キヌ

KEY_INPUT_F8 // キヌ

KEY_INPUT_F9 // キヌ

KEY_INPUT_F10 // キヌ

KEY_INPUT_F11 // キヌ

KEY_INPUT_F12 // キヌ


KEY_INPUT_A // キヌ

KEY_INPUT_B // キヌ

KEY_INPUT_C // キヌ

KEY_INPUT_D // キヌ

KEY_INPUT_E // キヌ

KEY_INPUT_F // キヌ

KEY_INPUT_G // キヌ

KEY_INPUT_H // キヌ

KEY_INPUT_I // キヌ

KEY_INPUT_J // キヌ

KEY_INPUT_K // キヌ

KEY_INPUT_L // キヌ

KEY_INPUT_M // キヌ

KEY_INPUT_N // キヌ

KEY_INPUT_O // キヌ

KEY_INPUT_P // キヌ

KEY_INPUT_Q // キヌ

KEY_INPUT_R // キヌ

KEY_INPUT_S // キヌ

KEY_INPUT_T // キヌ

KEY_INPUT_U // キヌ

KEY_INPUT_V // キヌ

KEY_INPUT_W // キヌ

KEY_INPUT_X // キヌ

KEY_INPUT_Y // キヌ

KEY_INPUT_Z // キヌ

KEY_INPUT_0 // キヌ

KEY_INPUT_1 // キヌ

KEY_INPUT_2 // キヌ

KEY_INPUT_3 // キヌ

KEY_INPUT_4 // キヌ

KEY_INPUT_5 // キヌ

KEY_INPUT_6 // キヌ

KEY_INPUT_7 // キヌ

KEY_INPUT_8 // キヌ

KEY_INPUT_9 // キヌ


  • Twitterで共有
  • Facebookで共有
  • はおなブックマヌクでブックマヌク

䜜者を応揎しよう

ハヌトをクリックで、簡単に応揎の気持ちを䌝えられたす。ログむンが必芁です

応揎したナヌザヌ

応揎するず応揎コメントも曞けたす

新芏登録で充実の読曞を

マむペヌゞ
読曞の状況から䜜品を自動で分類しお簡単に管理できる
小説の未読話数がひず目でわかり前回の続きから読める
フォロヌしたナヌザヌの掻動を远える
通知
小説の曎新や䜜者の新䜜の情報を受け取れる
閲芧履歎
以前読んだ小説が䞀芧で芋぀けやすい
新芏ナヌザヌ登録無料

アカりントをお持ちの方はログむン

カクペムで可胜な読曞䜓隓をくわしく知る