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;
}