2Dゲームサンプルコードの 01 バージョンです ふるいむかし
ブラウザでダウンロード
一番最初に作った、背景無しで左右に動き、プレーヤー画像をそのままショット画像に 使って、スペースキーと A キーで各々画面上に4つまで表示可能です。 スペースキー : まっすぐ A : 左45度方向 Q : ショット画像表示中に使用すると、プレーヤーが1回転して以降ショットが回転するようになります ショットの画像の上にテキストを表示しています Visual Studio 2005 で最終テストしていますが、 元々 VC6 で作成したものをそのまま変更しただけで動いています。
// ******************************************************** // EasyGame Ver 060904 : リリース初回バージョン // ******************************************************** #include "DxLib.h" #include "Game.h" // ゲーム環境クラス Game env; // プレイヤークラス Play me; // ショットクラス Shot st[4]; // ループ Callback 関数 int GameLoop( Game & ); // プレイヤー処理 Callback 関数 int PlayCheck( Game &, Play & ); // ショット一つ一つの処理 int ShotLoop( int curIndex, Game &, Play &, Shot & ); // ******************************************************** // 開始処理 // ******************************************************** int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { // タイトル設定 env.SetTitle( "ゲームプログラミング" ); // ウインドウモード設定 env.WindowMode(); // DirectX 初期化 if ( !env.Init( ) ) { return -1 ; } // プレイヤー画像のロード me.Image( "play.bmp" ); // プレイヤー初期位置 me.Position( 300, 400 ); // ショット初期化(画面内最大4つ発射) st[0].CreateShot( 4, PAD_INPUT_M ); // スペースキー st[1].CreateShot( 4, PAD_INPUT_X ); // A キー // ショット画像のロード st[0].Image( "play.bmp" ); st[1].Image( "play.bmp" ); // 処理開始 int ret; ret = env.Start( GameLoop ); return 0; } // ******************************************************** // 【ゲーム用ループ】 // 終わる時は return false; // ESC で強制終了 // ******************************************************** int GameLoop( Game &g ) { // プレイヤーの処理 me.Check( PlayCheck, g ); return true; } // ******************************************************** // 【プレイヤー処理関数】 // ******************************************************** int PlayCheck( Game &g, Play &p ) { // 右へ移動 if ( p.right ) { p.Move( PAD_INPUT_RIGHT, 3 ); } // 左へ移動 if ( p.left ) { p.Move( PAD_INPUT_LEFT, 3 ); } // 自分自身を描画 p.Draw(); // ショット処理 st[0].Action( ShotLoop, g, p ); st[1].Action( ShotLoop, g, p ); return true; } // ******************************************************** // ショット処理関数(有効インデックスしか Call されない) // ******************************************************** int ShotLoop( int i, Game &g, Play &p, Shot &s ) { if ( s.ShotKey == PAD_INPUT_M ) { // ショットの移動処理(位置を上にずらす) s.ShotY[ i ] -= 8 ; } if ( s.ShotKey == PAD_INPUT_X ) { // ショットの移動処理(位置を上にずらす) s.ShotY[ i ] -= 4 ; s.ShotX[ i ] -= 4 ; } if ( s.ShotKey == PAD_INPUT_M ) { DrawString( s.ShotX[ i ], s.ShotY[ i ]-32, "気合", GetColor( 255 , 255 , 255 ) ); s.Draw( i ); } if ( s.ShotKey == PAD_INPUT_X ) { DrawString( s.ShotX[ i ], s.ShotY[ i ]-32, "根性", GetColor( 255 , 255 , 255 ) ); s.Draw( i ); } return true; }