今メニュー画面を作るプログラムを書いていたのですが。
ウィンドウが一瞬で閉じてしまって、デバッグで実行しても目立ったエラーは発見されずわかりません。
main.cpp
#include"DxLib.h"
#include"SceneMgr.h"
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int) {
ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK);
while (ScreenFlip == 0 && ProcessMessage == 0 && ClearDrawScreen == 0) {
SceneMgr_Update();
SceneMgr_Draw();
}
DxLib_End();
return 0;
}
#include"DxLib.h"
#include"Title.h"
#include"Game.h"
#include"MusicSelect.h"
#include"Config.h"
#include"SceneMgr.h"
static eScene Scene = eScene_Title;//現在のシーン=タイトル画面
void SceneMgr_Update() {
switch (Scene) {
case eScene_Title:
Title_Update();
break;
case eScene_MusicSelect:
MusicSelect_Update();
break;
case eScene_Game:
Game_Update();
break;
case eScene_Config:
Config_Update();
break;
}
}
void SceneMgr_Draw() {
switch (Scene) {
case eScene_Title:
Title_Draw();
break;
case eScene_MusicSelect:
MusicSelect_Draw();
break;
case eScene_Game:
Game_Draw();
break;
case eScene_Config:
Config_Draw();
break;
}
}
//引数 NextSceneに変更
void SceneMgr_ChangeScene(eScene NextScene) {
Scene = NextScene;
}
#pragma once
//#ifndef DEF_SCENEMGR_H
//#define DEF_SCENEMGR_H
typedef enum {
eScene_Title,//タイトル画面
eScene_MusicSelect,//曲選択画面
eScene_Game,//ゲーム画面
eScene_Config//設定画面
}eScene;
//更新
void SceneMgr_Update();
//描画
void SceneMgr_Draw();
//引数NextSceneに変更
void SceneMgr_ChangeScene(eScene NextScene);
//#endif
#include"DxLib.h"
//#include"Keyboard.h"
#include"Config.h"
#include"SceneMgr.h"
void Config_Update() {
//if (Keyboard_Get(KEY_INPUT_ESCAPE) != 0) {
if (CheckHitKey(KEY_INPUT_ESCAPE) != 0) {
SceneMgr_ChangeScene(eScene_Title);
}
}
void Config_Draw() {
DrawString(250,250,"ESCキーでタイトルに戻る",GetColor(255,255,255));
//DrawString(0,0,"")
}
#pragma once
//#ifndef DEF_CONFIG_H
//#define DEF_CONFIG_H
//更新
void Config_Update();
//描画
void Config_Draw();
//#endif
#include"DxLib.h"
#include"Game.h"
//#include"Keyboard.h"
#include"MusicSelect.h"
#include"SceneMgr.h"
void MusicSelect_Update() {
//if (Keyboard_Get(KEY_INPUT_G) != 0) {
if (CheckHitKey(KEY_INPUT_G) != 0) {
SceneMgr_ChangeScene(eScene_Game);
}
//if (Keyboard_Get(KEY_INPUT_ESCAPE) != 0) {
if (CheckHitKey(KEY_INPUT_ESCAPE) != 0) {
SceneMgr_ChangeScene(eScene_Title);
}
}
void MusicSelect_Draw() {
DrawString(250, 250, "Gキーでゲーム画面に行く", GetColor(255, 255, 255));
DrawString(0, 0, "ESCキーでタイトルに戻る", GetColor(255, 255, 255));
}
#pragma once
//#ifndef DEF_MUSICSELECT_H
//#define DEF_MUSICSELECT_H
//更新
void MusicSelect_Update();
//描画
void MusicSelect_Draw();
//#endif
//#include"Keyboard.h"
#include"Title.h"
#include"MusicSelect.h"
#include"SceneMgr.h"
void Title_Update() {
//if (Keyboard_Get(KEY_INPUT_M) != 0) {
if (CheckHitKey(KEY_INPUT_M) != 0) {
SceneMgr_ChangeScene(eScene_MusicSelect);
}
//if (Keyboard_Get(KEY_INPUT_C) != 0) {
if (CheckHitKey(KEY_INPUT_ESCAPE) != 0) {
SceneMgr_ChangeScene(eScene_Config);
}
}
void Title_Draw() {
DrawString(250, 250, "Mキーで曲選択", GetColor(255, 255, 255));
DrawString(250, 280, "Sキーで設定画面", GetColor(255, 255, 255));
DrawString(0, 0, "ESCキーでタイトル画面に戻る",GetColor(255,255,255));
}
#pragma once
//#ifndef DEF_TITLE_H
//#define DEF_TITLE_H
//更新
void Title_Update();
//描画
void Title_Draw();
//#endif
#include"DxLib.h"
#include"Game.h"
//#include"Keyboard.h"
#include"SceneMgr.h"
void Game_Update() {
//if (Keyboard_Get(KEY_INPUT_ESCAPE) != 0) {//ESCキーが押されたらタイトルに戻る
if(CheckHitKey(KEY_INPUT_ESCAPE)!=0){
SceneMgr_ChangeScene(eScene_Title);
}
}
void Game_Draw() {
DrawString(250,250,"ゲーム画面 score:0 record:0",GetColor(255,255,255));
DrawString(0, 0, "ESCキーでタイトルに戻る", GetColor(255, 255, 255));
}
#pragma once
//#ifndef DEF_GAME_H
//#define DEF_GAME_H
//更新
void Game_Update();
//描画
void Game_Draw();
//#endif
https://dixq.net/g/sp_04.html
よろしくお願いします。