#include "DxLib.h" #include "Input.h" namespace { const int WIN_WIDTH = 1024; const int WIN_HEIGHT = 768; int crrTime; int prevTime; } class Game { enum GAMESTATE//ゲームシーケンス(タイトル、プレイ画面、ゲームオーバー) { TITLE, PLAY, GAMEOVER, MAXSTATE };//各状態で、スペースキーを押したら次の状態に移動する public: Game();//コンストラクタ 初期化用関数 ~Game();//デストラクタ 削除用関数 GAMESTATE stat; void Init(); void Update(); //各状態のアップデート関数 void UpdateTitle(); void UpdatePlay(); void UpdateGameOver(); void Draw(); //各状態の描画関数 void DrawTitle(); void DrawPlay(); void DrawGameOver(); }; Game::Game() { } Game::~Game() { } void Game::Init() { stat = GAMESTATE::TITLE;//かっこいい } void Game::Update()//毎フレームのデータ更新処理 { if (stat == GAMESTATE::TITLE) { UpdateTitle(); } else if (stat == GAMESTATE::PLAY) { UpdatePlay(); } else if (stat == GAMESTATE::GAMEOVER) { UpdateGameOver(); } } void Game::UpdateTitle() { if (Input::IsKeyDown(KEY_INPUT_SPACE)) { stat = GAMESTATE::PLAY; } } void Game::UpdatePlay() { if (Input::IsKeyDown(KEY_INPUT_SPACE)) { stat = GAMESTATE::GAMEOVER; } } void Game::UpdateGameOver() { if (Input::IsKeyDown(KEY_INPUT_SPACE)) { stat = GAMESTATE::TITLE; } } void Game::Draw() { if (stat == GAMESTATE::TITLE) { DrawTitle(); } else if (stat == GAMESTATE::PLAY) { DrawPlay(); } else if (stat == GAMESTATE::GAMEOVER) { DrawGameOver(); } } void Game::DrawTitle() { DrawString(100, 100, "TITLE", GetColor(0,0,0)); } void Game::DrawPlay() { DrawString(100, 100, "PLAY", GetColor(0, 0, 0)); } void Game::DrawGameOver() { DrawString(100, 100, "GAMEOVER", GetColor(0, 0, 0)); } // //void Init(); //void Update(float dTime); //void Draw(float dTime); void DxInit() { ChangeWindowMode(true); SetWindowSizeChangeEnableFlag(false, false); SetMainWindowText("TITLE"); SetGraphMode(WIN_WIDTH, WIN_HEIGHT, 32); SetWindowSizeExtendRate(1.0); SetBackgroundColor(255, 250, 205); // DXライブラリ初期化処理 if (DxLib_Init() == -1) { DxLib_End(); } SetDrawScreen(DX_SCREEN_BACK); } int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nCmdShow) { DxInit(); prevTime = GetNowCount(); Game game; game.Init(); while (true) { ClearDrawScreen(); Input::KeyStateUpdate(); //ここにやりたい処理を書く crrTime = GetNowCount(); float deltaTime = (crrTime - prevTime) / 1000.0;//フレーム間時間(s) game.Update(); game.Draw(); DrawFormatString(20, 50, GetColor(0, 0, 0), "%lf", deltaTime); ScreenFlip(); WaitTimer(16); prevTime = crrTime; if (ProcessMessage() == -1) break; if (CheckHitKey(KEY_INPUT_ESCAPE) == 1) break; } DxLib_End(); return 0; }