さあC言語(DXライブラリ)を使って超繊細、美麗、箱庭シューティングゲームを作ってみましょう 超初心者向けです 0.367
ゲーム画面に飛行機が飛んでいる最中でも あるキーを押すと プログラムの実行が終了し ゲームが終了するようにした~い
ゲーム画面に飛行機が飛んでいる最中でも あるキーを押すと プログラムの実行が終了し ゲームが終了するようにした~い
ソーラー「そういえば何の話だったっけ?
そうそう 思い出した
あるキーを押したとき
プログラムの実行を終了させるようにしたい
つまり
あるキーを押したとき
ゲームを終了させるようにしたいんだったね
具体的には
ゲーム画面に飛行機が飛んでいる最中でも
あるキーを押すと
ゲームを終了させるように(プログラムの実行が終了するように)
したいんだったね」
solarplexuss「そうそう
それが
いつのまにやらCheckHitKey関数の話になっていたよね」
ソーラー「そうなんです
あるキーを押すと
ゲームを終了させるように(プログラムの実行が終了するように)
するには
CheckHitKey関数
をもちいることになります」
solarplexuss「なんでえ
CheckHitKey関数が実行されたとき
CheckHitKey関数の引数に与えられたキーが押されているならば
CheckHitKey関数には
戻り値として1が返されることになる
CheckHitKey関数の引数に与えられたキーが押されていないならば
CheckHitKey関数には
戻り値として0が返されることになる
というお話だけど
ただそれだけのことじゃない?
CheckHitKey関数をつかって
ゲーム画面に飛行機が飛んでいる最中に
あるキーを押すと
ゲームを終了させるように(プログラムの実行が終了するように)
するなんてことができるの?
のん、のん」
ソーラー「そう
確かに
CheckHitKey関数を実行しただけでは
CheckHitKey関数に戻り値として
0
もしくは
1
が返されるだけで
ゲーム画面に飛行機が飛んでいる最中に
あるキーを押しても
ゲームを終了させるように(プログラムの実行が終了するように)
することはできません
ですが
うまく
CheckHitKey関数をつかえば
プログラムの実行が終了するのを早めることができます」
solarplexuss「ええ?
CheckHitKey関数をつかえば
プログラムの実行が終了するのを早めることができるぅ?💖
って
ど~いうことお?
プログラムの実行を終了させるの間違いなのね
そうなのね(*´▽`*)」
マックス「しかも
CheckHitKey関数をつかっても
全然、プログラムの実行の終了は
早まりそうにないぞ」
ソーラー「はは
それが
CheckHitKey関数をつかえば
プログラムの実行が終了するのを早めることができるんです
ゲームのプログラムはだいたい
while{}文もしくはfor{}文によって構成されています
そして
while{}文もしくはfor{}文は実行されると
ブロック{}内の命令文を
繰り返し実行することになります
そしてたいていの場合
while{}文もしくはfor{}文が実行される時間は
プログラムの全実行時間の内のかなりの部分を占めることになります
その様子を示す
次のプログラムをご覧ください
👇
#include "DxLib.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
ChangeWindowMode(TRUE); // ウインドウモードに設定します
if (DxLib_Init() == -1) // DXライブラリを初期化処理しています
{
return -1; // DXライブラリの初期化に失敗したら直ちにプログラムを終了します
}
int graphichandle;
graphichandle = LoadGraph("画像データ\\ソーラーが描いた飛行機.bmp");
SetDrawScreen(DX_SCREEN_BACK);//👈🌞SetDrawScreen関数です
int x=0;
while(x< 640){
ProcessMessage();//👈ここです ここにProcessMessage();を記述しました
DrawBox(100, 100, 500, 300, GetColor(0, 255, 255), TRUE);
DrawGraph(x, 230, graphichandle, TRUE);
ScreenFlip();
ClearDrawScreen();
x++;
};
DxLib_End(); // DXライブラリの使用を終了します DXライブラリの使用しているメモリ領域が解放されます
return 0; // プログラムを終了します
}
デバッグなしで実行をしてから一度プログラムを終了し
生成されたexeファイルをハードディスクから探し出しクリックする方法により得られたプログラムの実行結果はこちらです
👇
https://youtu.be/YAC-j31RGl8
ソーラー「このプログラムは飛行機が右に飛んでいくプログラム(ゲームともいえます)ですが
プログラムの全実行時間の内のかなりの部分が
このwhile{}文
👇
while(x< 640){
ProcessMessage();//👈ここです ここにProcessMessage();を記述しました
DrawBox(100, 100, 500, 300, GetColor(0, 255, 255), TRUE);
DrawGraph(x, 230, graphichandle, TRUE);
ScreenFlip();
ClearDrawScreen();
x++;
};
のブロック{}内の命令文
👇
ProcessMessage();//👈ここです ここにProcessMessage();を記述しました
DrawBox(100, 100, 500, 300, GetColor(0, 255, 255), TRUE);
DrawGraph(x, 230, graphichandle, TRUE);
ScreenFlip();
ClearDrawScreen();
x++;
👆
が繰り返し実行される時間によって占められています
それ以外の部分は1瞬で実行が終了します
もし
何かのキーを押したとき
このwhile{}文
のブロック{}内の命令文
👇
ProcessMessage();//👈ここです ここにProcessMessage();を記述しました
DrawBox(100, 100, 500, 300, GetColor(0, 255, 255), TRUE);
DrawGraph(x, 230, graphichandle, TRUE);
ScreenFlip();
ClearDrawScreen();
x++;
👆
が繰り返し実行されるのを終了させることができれば
(while{}文の繰り返しループから抜け出すことができれば)
あとは
DxLib_End(); // DXライブラリの使用を終了します DXライブラリの使用しているメモリ領域が解放されます
return 0; // プログラムを終了します
が実行されるだけとなります
が
DxLib_End(); // DXライブラリの使用を終了します DXライブラリの使用しているメモリ領域が解放されます
return 0; // プログラムを終了します
の実行は
1瞬で終了するので
プログラムの実行(ゲーム)を終了させるのを相当早めることができるね
◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎
DxLib_End(); // DXライブラリの使用を終了します DXライブラリの使用しているメモリ領域が解放されます
return 0; // プログラムを終了します
◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎
が実行される時間は
ほんの1瞬です
ですので
このwhile{}文
のブロック{}内の命令文
👇
ProcessMessage();//👈ここです ここにProcessMessage();を記述しました
DrawBox(100, 100, 500, 300, GetColor(0, 255, 255), TRUE);
DrawGraph(x, 230, graphichandle, TRUE);
ScreenFlip();
ClearDrawScreen();
x++;
👆
の繰り返し実行が終了されたなら
(while{}文の繰り返しループから抜け出すことができれば)
もう
プログラムの実行は終了(ゲームは終了)したも当然なんだね」
マックス「なるほど
while{}文の繰り返しループから
抜け出すことさえできれば
プログラムの実行は終了(ゲームは終了)したも当然か・・・
となると
while{}文の繰り返しループから
抜け出す方法を見つければいいんだな
もしや・・・
ここに
CheckHitKey関数が関係してきたりしてな
なあ~んてな」
solarplexuss「関係しているっぽいね」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます