以下ソースコード(一部)
main.cpp
#define GLOBAL_INSTANCE
#include "DxLib.h"
#include "secenMgr.h"
#include "GV.h"
//ループで必ず行う3大処理
int ProcessLoop(){
if(ProcessMessage()!=0)return -1;//プロセス処理がエラーなら-1を返す
if(ClearDrawScreen()!=0)return -1;//画面クリア処理がエラーなら-1を返す
GetHitKeyStateAll_2();//現在のキー入力処理を行う
GetHitPadStateAll(); //現在のパッド入力処理を行う
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
ChangeWindowMode(TRUE);//ウィンドウモード
if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
SceneMgr_Initialize();
while(ProcessLoop()==0){//メインループ
void UpdateScene();//シーンを更新する
music_ini();
switch(func_state){
case 0://初回のみ入る処理
load(); //データロード
first_ini();//初回の初期化
func_state=98;
break;
case 98://STGを始める前に行う初期化
ini();
load_story();
func_state=99;
break;
case 99:
SceneMgr_Initialize();
SceneMgr_Update();
SceneMgr_Draw();
SceneMgr_Finalize();
func_state = 100;
break;
case 100://通常処理
enter_func_tm("最初");
calc_ch(); enter_func_tm("キャラ計算");
ch_move(); enter_func_tm("キャラ移動");
cshot_main(); enter_func_tm("自機ショットメイン");
enemy_main(); enter_func_tm("敵処理メイン");
boss_shot_main();enter_func_tm("ボスショットメイン");
shot_main(); enter_func_tm("ショットメイン");
out_main(); enter_func_tm("当たり判定");
effect_main(); enter_func_tm("エフェクトメイン");
calc_main(); enter_func_tm("計算メイン");
graph_main(); enter_func_tm("描画メイン");
bgm_main(); enter_func_tm("BGMメイン");
if(boss.flag==0)
stage_count++;
break;
default:
printfDx("不明なfunc_state\n");
break;
}
music_play(); enter_func_tm("音楽再生");
fps_wait(); enter_func_tm("待機した時間",1);
if(CheckStateKey(KEY_INPUT_ESCAPE)==1)break;//エスケープが入力されたらブレイク
ScreenFlip();//裏画面反映
count++;
}
SceneMgr_Finalize();
DxLib_End();//DXライブラリ終了処理
return 0;
}
#include "DxLib.h"
#include "config.h"
#include "Game.h"
#include "menu.h"
#include "secenMgr.h"
static eScene mScene = eScene_Menu; //シーン管理変数
static eScene mNextScene = eScene_None; //次のシーン管理変数
static void SceneMgr_InitializeModule(eScene scene);//指定モジュールを初期化する
static void SceneMgr_FinalizeModule(eScene scene);//指定モジュールの終了処理を行う
//初期化
void SceneMgr_Initialize(){
SceneMgr_InitializeModule(mScene);
}
//終了処理
void SceneMgr_Finalize(){
SceneMgr_FinalizeModule(mScene);
}
//更新
void SceneMgr_Update(){
if(mNextScene != eScene_None){ //次のシーンがセットされていたら
SceneMgr_FinalizeModule(mScene);//現在のシーンの終了処理を実行
mScene = mNextScene; //次のシーンを現在のシーンセット
mNextScene = eScene_None; //次のシーン情報をクリア
SceneMgr_InitializeModule(mScene); //現在のシーンを初期化
}
switch(mScene){ //シーンによって処理を分岐
case eScene_Menu: //現在の画面がメニューなら
Menu_Update(); //メニュー画面の更新処理をする
break;//以下略
case eScene_Game:
Game_Update();
break;
case eScene_Config:
Config_Update();
break;
}
}
//描画
void SceneMgr_Draw(){
switch(mScene){ //シーンによって処理を分岐
case eScene_Menu: //現在の画面がメニュー画面なら
Menu_Draw(); //メニュー画面の描画処理をする
break;//以下略
case eScene_Game:
Game_Draw();
break;
case eScene_Config:
Config_Draw();
break;
}
}
// 引数 nextScene にシーンを変更する
void SceneMgr_ChangeScene(eScene NextScene){
mNextScene = NextScene; //次のシーンをセットする
}
// 引数sceneモジュールを初期化する
static void SceneMgr_InitializeModule(eScene scene){
switch(scene){ //シーンによって処理を分岐
case eScene_Menu: //指定画面がメニュー画面なら
Menu_Initialize(); //メニュー画面の初期化処理をする
break;//以下略
case eScene_Game:
Game_Initialize();
break;
case eScene_Config:
Config_Initialize();
break;
}
}
// 引数sceneモジュールの終了処理を行う
static void SceneMgr_FinalizeModule(eScene scene){
switch(scene){ //シーンによって処理を分岐
case eScene_Menu: //指定画面がメニュー画面なら
Menu_Finalize(); //メニュー画面の終了処理処理をする
break;//以下略
case eScene_Game:
Game_Finalize();
break;
case eScene_Config:
Config_Finalize();
break;
}
}
#pragma once
enum eScene{
eScene_Menu, //メニュー画面
eScene_Game, //ゲーム画面
eScene_Config, //設定画面
eScene_None, //無し
};
void SceneMgr_Initialize();//初期化
void SceneMgr_Finalize();//終了処理
void SceneMgr_Update();//更新
void SceneMgr_Draw();//描画
// 引数 nextScene にシーンを変更する
void SceneMgr_ChangeScene(eScene nextScene);
#include "config.h"
#include "secenMgr.h"
#include "DxLib.h"
static int mImageHandle; //画像ハンドル格納用変数
//初期化
void Config_Initialize(){
mImageHandle = LoadGraph("images/Scene_Config.png");//画像のロード
}
//終了処理
void Config_Finalize(){
DeleteGraph(mImageHandle);//画像の解放
}
//更新
void Config_Update(){
if(CheckHitKey(KEY_INPUT_ESCAPE)!=0){//Escキーが押されていたら
SceneMgr_ChangeScene(eScene_Menu);//シーンをメニューに変更
}
}
//描画
void Config_Draw(){
DrawGraph(0,0,mImageHandle,FALSE);
DrawString(0, 0,"設定画面です。",GetColor(255,255,255));
DrawString(0,20,"Escキーを押すとメニュー画面に戻ります。",GetColor(255,255,255));
}
#pragma once
void Config_Initialize();//初期化
void Config_Finalize();//終了処理
void Config_Update();//更新
void Config_Draw();//描画
#include "Game.h"
#include "secenMgr.h"
#include "DxLib.h"
static int mImageHandle; //画像ハンドル格納用変数
//初期化
void Game_Initialize(){
mImageHandle = LoadGraph("images/Scene_Game.png"); //画像のロード
}
//終了処理
void Game_Finalize(){
DeleteGraph(mImageHandle); //画像の解放
}
//更新
void Game_Update(){
if(CheckHitKey(KEY_INPUT_ESCAPE)!=0){ //Escキーが押されていたら
SceneMgr_ChangeScene(eScene_Menu);//シーンをメニューに変更
}
}
//描画
void Game_Draw(){
DrawGraph(0,0,mImageHandle,FALSE);
DrawString(0, 0,"ゲーム画面です。",GetColor(255,255,255));
DrawString(0,20,"Escキーを押すとメニュー画面に戻ります。",GetColor(255,255,255));
}
#pragma once
void Game_Initialize();//初期化
void Game_Finalize();//終了処理
void Game_Update();//更新
void Game_Draw();//描画
#include "menu.h"
#include "secenMgr.h"
#include "DxLib.h"
static int mImageHandle; //画像ハンドル格納用変数
//初期化
void Menu_Initialize(){
mImageHandle = LoadGraph("images/Scene_Menu.png"); //画像のロード
}
//終了処理
void Menu_Finalize(){
DeleteGraph(mImageHandle); //画像の解放
}
//更新
void Menu_Update(){
if(CheckHitKey(KEY_INPUT_G)!=0){//Gキーが押されていたら
SceneMgr_ChangeScene(eScene_Game);//シーンをゲーム画面に変更
}
if(CheckHitKey(KEY_INPUT_C)!=0){//Cキーが押されていたら
SceneMgr_ChangeScene(eScene_Config);//シーンを設定画面に変更
}
}
//描画
void Menu_Draw(){
DrawGraph(0,0,mImageHandle,FALSE);
DrawString(0, 0,"メニュー画面です。",GetColor(255,255,255));
DrawString(0,20,"Gキーを押すとゲーム画面に進みます。",GetColor(255,255,255));
DrawString(0,40,"Cキーを押すと 設定画面に進みます。",GetColor(255,255,255));
}
#pragma once
void Menu_Initialize();//初期化
void Menu_Finalize();//終了処理
void Menu_Update();//更新
void Menu_Draw();//描画
と出ます。なぜでしょうか