弾を撃つ ふるいむかし
VC6プロジェクト
基本的なクラス部分が完成
基本的なクラス部分が完成
#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 ); // 処理開始 int ret; ret = env.Start( GameLoop ); return 0; } // ******************************************************** // ゲーム用ループ // 終わる時は return false; // ******************************************************** int GameLoop( Game &g ) { // プレイヤーの処理 me.Check( PlayCheck, g ); return true; } // ******************************************************** // プレイヤー処理関数 // ******************************************************** int PlayCheck( Game &g, Play &p ) { // 右へ移動 if ( p.right ) { p.x += 3; } // 左へ移動 if ( p.left ) { p.x -= 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.ShotY[ i ] < -32 ) { s.ShotExist[ i ] = 0; } if( s.ShotX[ i ] < -32 ) { s.ShotExist[ i ] = 0; } if ( s.ShotKey == PAD_INPUT_M ) { DrawString( s.ShotX[ i ], s.ShotY[ i ], "呪い", GetColor( 255 , 255 , 255 ) ); } if ( s.ShotKey == PAD_INPUT_X ) { DrawString( s.ShotX[ i ], s.ShotY[ i ], "天然", GetColor( 255 , 255 , 255 ) ); } // ショットを描画する /* DrawBox( s.ShotX[ i ], s.ShotY[ i ], s.ShotX[ i ] + 16, s.ShotY[ i ] + 16, GetColor( 255 , 255 , 255 ) , TRUE ); */ return true; }