//============================================================================= // ゲーム処理関係の自作関数群 // Copyright NKC Game Staff(←自分の名前)  //----------------------------------------------------------------------------- #include "NKC_Common.h" // グローバル変数 /* 自ソースでのみ利用するもの */ //---- 背景 static TLVERTX BackVertex[4]; // 頂点情報配列 //---- 自機 static STATUS MyChara; // 自キャラステータス情報 //---- 敵 static STATUS Enemy; // 敵キャラステータス情報 // プロトタイプ宣言 /* 自ソース(Game.cpp)内でのみ利用するもの */ //----------------------------------------------------------------------------- // 関数名 : GameInit() // 機能概要: ゲーム画面初期化処理 //----------------------------------------------------------------------------- void GameInit(void) { //--------------------------------------------------- 各変数の初期化 // ゲーム画面で使用するテクスチャの作成 CreateGameTexture(); // ポリゴンの初期化 /* 背景 */ InitVertex(BackVertex, (float)gl_rcScreen.left, (float)gl_rcScreen.top, (float)gl_rcScreen.right, (float)gl_rcScreen.bottom, 255); // 頂点データ /* 自機 */ InitVertex(MyChara.Vertex, 100.0f, 100.0f, 164.0f, 164.0f, 255); // 頂点データ SetRect(&MyChara.HitRect, 10, 15, 10, 15); // 当たり判定矩形 MyChara.MoveX = 2.0f; MyChara.MoveY = 2.0f; /* 敵 */ InitVertex(Enemy.Vertex, 400.0f, 300.0f, 496.0f, 396.0f, 255); // 頂点データ SetRect(&Enemy.HitRect, 5, 5, 5, 5); // 当たり判定矩形 Enemy.MoveX = 3.0f; Enemy.MoveY = 3.0f; //--------------------------------------------------- フレームナンバーセット g_FrameNo = GAME_FRAME; } //----------------------------------------------------------------------------- // 関数名 : GameFrame() // 機能概要: ゲーム画面処理 //----------------------------------------------------------------------------- void GameFrame(void) { float mx, my; // 移動量 //--------------------------------------------------- 描画処理 // 背景 gl_lpD3ddev->SetTexture(0, gl_TXBack); gl_lpD3ddev->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, BackVertex, sizeof(TLVERTX)); // 自キャラ gl_lpD3ddev->SetTexture(0, gl_TXMyChara); gl_lpD3ddev->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, MyChara.Vertex, sizeof(TLVERTX)); // 敵キャラ gl_lpD3ddev->SetTexture(0, gl_TXEnemy); gl_lpD3ddev->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, Enemy.Vertex, sizeof(TLVERTX)); //--------------------------------------------------- 移動処理 // 自キャラ mx = my = 0.0f; if ( gl_KeyTbl[VK_LEFT] & 0x80 ) mx = -MyChara.MoveX; if ( gl_KeyTbl[VK_UP] & 0x80 ) my = -MyChara.MoveY; if ( gl_KeyTbl[VK_RIGHT] & 0x80 ) mx = MyChara.MoveX; if ( gl_KeyTbl[VK_DOWN] & 0x80 ) my = MyChara.MoveY; Move(MyChara.Vertex, mx, my); MoveCheck(gl_rcScreen, MyChara.Vertex); // 指定範囲を超えないようにする // 敵キャラ Move(Enemy.Vertex, Enemy.MoveX, Enemy.MoveY); MoveCheck(gl_rcScreen, Enemy.Vertex); // 指定範囲を超えないようにする if ( Enemy.Vertex[0].x == gl_rcScreen.left || gl_rcScreen.right == Enemy.Vertex[2].x ) Enemy.MoveX *= (-1.0); if ( Enemy.Vertex[0].y == gl_rcScreen.top || gl_rcScreen.bottom == Enemy.Vertex[2].y ) Enemy.MoveY *= (-1.0); //--------------------------------------------------- 当たり判定 // 自キャラと敵キャラ if ( HitCheck2(MyChara.Vertex, MyChara.HitRect, Enemy.Vertex, Enemy.HitRect) ) { ReleaseGameTexture(); g_FrameNo = START_INIT; } // F1が押されたら、スタート画面に戻る(デバッグ用) if ( gl_KeyTbl[VK_F1] & 0x80 ) { ReleaseGameTexture(); g_FrameNo = START_INIT; } }