// DxLib 雛形:状態遷移 TITLE/PLAY/CLEAR/GAMEOVER #include "DxLib.h" #include #include //--------------------------- // 状態定義 //--------------------------- enum GAME_STATE { TITLE, PLAY, CLEAR, GAMEOVER, }; // ゲーム状態の変数と、状態の初期化 enum GAME_STATE state = TITLE; //--------------------------- // 画面サイズ(中央寄せ用) //--------------------------- #define SCREEN_W 1280 #define SCREEN_H 720 //--------------------------- // フォントハンドル //--------------------------- int gFontTitle = -1; // 大タイトル int gFontLarge = -1; // 大見出し int gFontMedium = -1; // サブ見出し int gFontSmall = -1; // 説明小さめ //--------------------------- // 関数プロトタイプ //--------------------------- void TitleUpdate(void); void TitleDraw(void); void PlayUpdate(void); void PlayDraw(void); void ClearUpdate(void); void ClearDraw(void); void GameOverUpdate(void); void GameOverDraw(void); // 中央寄せ文字描画(影つき) void DrawCenteredString(const char* text, int y, int font, unsigned int colMain, unsigned int colShadow, int shadowOffset); //--------------------------- // メイン(WinMain) //--------------------------- int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { ChangeWindowMode(TRUE); SetGraphMode(SCREEN_W, SCREEN_H, 32); SetWindowText("DxLib State Template - Centered Bold UI"); if (DxLib_Init() != 0) return -1; SetDrawScreen(DX_SCREEN_BACK); // フォント作成(太め&アンチエイリアス) // CreateFontToHandle(名前, サイズpx, 太さ, タイプ, 文字セット, エッジ幅) gFontTitle = CreateFontToHandle("Meiryo", 96, 6, DX_FONTTYPE_ANTIALIASING_8X8, -1, -1); gFontLarge = CreateFontToHandle("Meiryo", 64, 5, DX_FONTTYPE_ANTIALIASING_8X8, -1, -1); gFontMedium = CreateFontToHandle("Meiryo", 36, 4, DX_FONTTYPE_ANTIALIASING_8X8, -1, -1); gFontSmall = CreateFontToHandle("Meiryo", 24, 2, DX_FONTTYPE_ANTIALIASING_8X8, -1, -1); while (ProcessMessage() == 0) { ClearDrawScreen(); // 背景(淡い色) DrawBox(0, 0, SCREEN_W, SCREEN_H, GetColor(153, 204, 179), TRUE); // 状態に応じて描画(更新は空のまま) switch (state) { case TITLE: TitleUpdate(); // ←中身は空 TitleDraw(); break; case PLAY: PlayUpdate(); // ←中身は空 PlayDraw(); break; case CLEAR: ClearUpdate(); // ←中身は空 ClearDraw(); break; case GAMEOVER: GameOverUpdate(); // ←中身は空 GameOverDraw(); break; default: break; } ScreenFlip(); } // フォント破棄 if (gFontTitle != -1) DeleteFontToHandle(gFontTitle); if (gFontLarge != -1) DeleteFontToHandle(gFontLarge); if (gFontMedium != -1) DeleteFontToHandle(gFontMedium); if (gFontSmall != -1) DeleteFontToHandle(gFontSmall); DxLib_End(); return 0; } //==================== ここから Update(空) ==================== void TitleUpdate(void) {} void PlayUpdate(void) {} void ClearUpdate(void) {} void GameOverUpdate(void){}