夏休みゲームプログラミング講習 前回の復習 #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int graph; if( DxLib_Init() == -1 ) return -1; SetDrawScreen( DX_SCREEN_BACK ) ; ClearDrawScreen() ; graph = LoadGraph( "講習用.png" ) ; DrawGraph( 0 , 0 , graph, TRUE ) ; ScreenFlip() ; WaitKey() ; DxLib_End() ; return 0 ; } 解説 #include "DxLib.h" DxLib ヘッダーファイルの展開(参考文献のようなもの) int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ) WinMain 関数。長いけど、そのまま打ち込んでね 1 夏休みゲームプログラミング講習 if( DxLib_Init() == -1 ) return -1; DxLib_Init()は、DX ライブラリを初期化する関数。if 文を使い、初期化に失敗した(-1 を返した)と き、return -1;でプログラムを強制終了させる SetDrawScreen( DX_SCREEN_BACK ) ; 画像の描画先を裏画面に設定する ScreenFlip() ; 裏画面に描画した画像を、表画面に反映する。上の SetDrawScreen と合わせ、ダブルバッファリングと いう技術。 ClearDrawScreen() ; 画面を一旦まっさらにする関数。しないと、前回表示した画像がまた出てくるよ LoadGraph( "講習用.png" ) ; 画像を、変数のハンドルに格納する関数。メモリ上に画像のコピーを行い、呼び出しの手間を減らすこ とができる。 ()内は、その画像のある場所 DrawGraph( 0 , 0 , graph , TRUE ) ; ハンドルに格納した画像を呼び出す。 ()内は、最初の 2 引数が、x 座標と y 座標。第 3 引数は画像のハ ンドル名。第 4 引数は、その画像に透過色があれば、TRUE で透過、FALSE で透過しないを選択する WaitKey() ; このままだと、瞬時にプログラムが終了してしまうため、入れてみた関数。キー入力があるまで、処理 を一時停止させることができる DxLib_End() ; DX ライブラリの終了。かならず入れておく。 2 夏休みゲームプログラミング講習 前回の冒頭の話の要約 プログラムを作るときに、そのままコンピュータ相手のプログラムを作るのは、内容が煩雑な ので困難。よって、プログラミング用のソフトウェアを仲立ちにして、コンピュータへのプログ ラムを書く。 それぞれのソフトウェアには、独自に便利な関数を前もって標準搭載しており、それを使うこ とで、プログラムが効率良く書ける。DX ライブラリは、ゲーム製作に便利な関数や、機能が多 数で、かつそれが比較的簡単なので、サークルで使われている(重くもないしね)。 こっから今日の内容 まず WinMain 関数内に while 文のループをつくり、そのループから出たらプログラムの終了、という形 に変えるよ 具体的にはこう 以上、割愛 ClearDrawScreen() ; while(){ graph = LoadGraph( "講習用.png" ) ; DrawGraph( 0 , 0 , graph, TRUE ) ; ScreenFlip() ; if( ProcessMessage() < 0 ) break ; if( CheckHitKey( KEY_INPUT_ESCAPE ) ) break ; } DxLib_End() ; 以下、割愛 if( ProcessMessage() < 0 ) break ; 3 夏休みゲームプログラミング講習 ProcessMessage は OS などからメッセージが来たときに使える関数。この処理で、エラーメッセージな どが飛んできたときに、瞬時にプログラムを終了させられる CheckHitKey( KEY_INPUT_ESCAPE ) あるキーが押されたかどうかを判定する関数。 ()内に、対象のキーを入れる。 MMCwiki のゲームプログラミング講習の『第 1.5 章』に、よく使うキーが書かれているよ 今回はこれを使い、Esc キーが押されたら while 文のループから脱出するようにしてます さらに、この CheckHitKey を使い、自機キャラを動かす記述を加えてみる 以上、割愛 graph = LoadGraph( "講習用.png" ) ; int X = 0; int Y = 0; if( CheckHitKey( KEY_INPUT_UP ) == 1 ) Y -= 3 ; if( CheckHitKey( KEY_INPUT_DOWN ) == 1 ) Y += 3 ; if( CheckHitKey( KEY_INPUT_LEFT ) == 1 ) X -= 3 ; if( CheckHitKey( KEY_INPUT_RIGHT ) == 1 ) X += 3 ; if( X < 0 ) X = 0 ; if( X > 640 - 30 ) X = 640 - 30 ; if( Y < 0 ) Y = 0 ; if( Y > 480 - 64 ) Y = 480 - 64 ; DrawGraph( X , Y , graph , TRUE ) ; 以下、割愛 この記述により、自機をアローキーで移動させ、かつ画面内に範囲を限定させられる 次は敵キャラを表示してみよう 敵キャラグラフィックを、プロジェクトの Debug フォルダに入れておく 4 夏休みゲームプログラミング講習 int enemy = LoadGraph(“ 講習用敵キャラ.png”); int enemyX = 60; int enemyY = 400; bool enemyMuki = 1; if( enemyMuki == 1 ) enemyX += 3 ; if( enemyMuki == 0 ) enemyX -= 3 ; if( enemyX > 580 ) { enemyX = 580 ; enemyMuki = 0 ; } if( enemyX < 0 ) { enemyX = 0 ; enemyMuki = 1 ; } // 敵を描画 DrawGraph( enemyX , enemyY , enemygraph , TRUE ) ; これを自機キャラの記述の下に記述しておくだけでおしまい では次に、特定のキー入力で、特定の操作を行う 5
© Copyright 2024 ExpyDoc