>> ゲームプログラミング入門トップに戻る
色々とメインループでは必ず実行しなくてはならないものが増えてきたので、
ここで必要なものをまとめたメインループの骨格を完成させましょう。
必要な関数は、
ProcessMessage
ScreeFlip
ClearDrawScreen
でしたよね?
ですがキーボードの状態も毎ループごとに取得しておく必要があると思うので、
まとめて取得できる、GetHitKeyStateAll関数も実行するようにしましょう。
するとメインループは、
こんな感じになります。
これで毎回ウィンドウメッセージは処理できますし、表画面への反映、裏画面の消去、キーの取得が
まとめて行えます。
戻り値が0以外でエラーだと、ループを抜けることが出来るわけです。
では今度は、このループを使って画像をキーボードのキーを使って動かせるようにしてみましょう。
以下のコードを見てください。
コレを実行すると下記の動画のようなことが出来ます。
画像は前の講座でも使ったchar.pngを使っています。
キーボードの上下左右でキャラの移動が出来るようにしています。
コードを見てください。
最初にx,y座標の初期値を設定し、
画像を読み込んでグラフィックハンドルを取得しています。
その後描画先を裏画面に設定し、メインループに入ります。
ループ内では、DrawGraph関数で描画を行っています。
キーボードの上下左右のキーが押されると、
それぞれ座標の増減を行っています。
左キーが押されるとX座標を減らし、右キーが押されるとX座標を増加。
上キーが押されるとY座標を減らし、下キーが押されるとY座標を増加してます。
2章でも説明しましたが、画面左上の座標が(0,0)で、
X座標は右に行くと増加し、Y座標は下に行くほど増加します。
これらの座標を毎回DrawGraphに渡して描画することで、動かしながら描画することができます。
コードにも書いてあるとおり、エスケープキーを押したらループを抜けて終了するようにしています。
この形がゲームプログラミングで使う、メインループの骨格になります。
この章までマスターしてしまえば、簡単なゲームぐらいは作れるようになっているはずです。
ゲームプログラミングは自分で色々実験してみることが大切です。
積極的にチャレンジして、分からなければ質問する、というスタンスで進めていくと良いでしょう。
以上で基本編の講座は終わりです。
これからは各カテゴリで必要なものを勉強していってください。
>> ゲームプログラミング入門トップに戻る
メインループの骨格を完成させよう
ここで必要なものをまとめたメインループの骨格を完成させましょう。
必要な関数は、
ProcessMessage
ScreeFlip
ClearDrawScreen
でしたよね?
ですがキーボードの状態も毎ループごとに取得しておく必要があると思うので、
まとめて取得できる、GetHitKeyStateAll関数も実行するようにしましょう。
するとメインループは、
while(ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll(key)==0){ ~~~~~ここに好きな処理を書く~~~~ }
こんな感じになります。
これで毎回ウィンドウメッセージは処理できますし、表画面への反映、裏画面の消去、キーの取得が
まとめて行えます。
戻り値が0以外でエラーだと、ループを抜けることが出来るわけです。
では今度は、このループを使って画像をキーボードのキーを使って動かせるようにしてみましょう。
以下のコードを見てください。
#include "DxLib.h" // プログラムは WinMain から始まります int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode(TRUE); if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1 ; // エラーが起きたら直ちに終了 } //グラフィックハンドル int gh; //キー取得用配列 char key[256]; //x座標 int x=300,y=240; //画像読み込み gh = LoadGraph("char.png"); //描画先を裏画面に設定 SetDrawScreen(DX_SCREEN_BACK); while(ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll(key)==0){ DrawGraph(x,y,gh,TRUE); if(key[KEY_INPUT_LEFT]==1){ x-=6; } if(key[KEY_INPUT_RIGHT]==1){ x+=6; } if(key[KEY_INPUT_UP]==1){ y-=6; } if(key[KEY_INPUT_DOWN]==1){ y+=6; } if(key[KEY_INPUT_ESCAPE]==1){ break; } } DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 }
コレを実行すると下記の動画のようなことが出来ます。
画像は前の講座でも使ったchar.pngを使っています。
キーボードの上下左右でキャラの移動が出来るようにしています。
コードを見てください。
最初にx,y座標の初期値を設定し、
画像を読み込んでグラフィックハンドルを取得しています。
その後描画先を裏画面に設定し、メインループに入ります。
ループ内では、DrawGraph関数で描画を行っています。
キーボードの上下左右のキーが押されると、
それぞれ座標の増減を行っています。
左キーが押されるとX座標を減らし、右キーが押されるとX座標を増加。
上キーが押されるとY座標を減らし、下キーが押されるとY座標を増加してます。
2章でも説明しましたが、画面左上の座標が(0,0)で、
X座標は右に行くと増加し、Y座標は下に行くほど増加します。
これらの座標を毎回DrawGraphに渡して描画することで、動かしながら描画することができます。
コードにも書いてあるとおり、エスケープキーを押したらループを抜けて終了するようにしています。
この形がゲームプログラミングで使う、メインループの骨格になります。
この章までマスターしてしまえば、簡単なゲームぐらいは作れるようになっているはずです。
ゲームプログラミングは自分で色々実験してみることが大切です。
積極的にチャレンジして、分からなければ質問する、というスタンスで進めていくと良いでしょう。
以上で基本編の講座は終わりです。
これからは各カテゴリで必要なものを勉強していってください。
>> ゲームプログラミング入門トップに戻る