能帮到你的话,就给个赞吧 😘
文章目录
- scene.h
- menuScene.h
- gameScene.h
- main
- scene.cpp
- menuScene.cpp
- gameScene.cpp
scene.h
#pragma once
#include <graphics.h>/*
场景菜单角色选择游戏
*/
class Scene {
public:virtual ~Scene() = 0;
public:virtual void onEnter() = 0; //进入virtual void onInput(const ExMessage& msg) = 0; //输入virtual void onUpdate() = 0; //更新virtual void onDraw() = 0; //渲染virtual void onExit() = 0; //退出
};
menuScene.h
#pragma once
#include "scene.h"class MenuScene :public Scene {public:virtual void onEnter(); //进入virtual void onInput(const ExMessage& msg); //输入virtual void onUpdate(); //更新virtual void onDraw(); //渲染virtual void onExit(); //退出
};
gameScene.h
#pragma once
#include "scene.h"class gameScene :public Scene {public:virtual void onEnter(); //进入virtual void onInput(const ExMessage& msg); //输入virtual void onUpdate(); //更新virtual void onDraw(); //渲染virtual void onExit(); //退出
};
main
#include <Windows.h> //windows要放在graphic之前
#include <graphics.h>
#include "menuScene.h"int main() {ExMessage msg;const int FPS = 1000 / 1000;auto menuScene = new MenuScene;initgraph(1280, 720, EW_SHOWCONSOLE);BeginBatchDraw();menuScene->onEnter();while (1) { auto startTime = GetTickCount64();//读消息peekmessage(&msg);//处理消息menuScene->onInput(msg);//更新数据menuScene->onUpdate();//渲染cleardevice();menuScene->onDraw();FlushBatchDraw();//hertzauto excutionTime = GetTickCount64() - startTime;if (excutionTime < FPS)Sleep(FPS - excutionTime);}EndBatchDraw();delete menuScene;
}
scene.cpp
#include "scene.h"Scene::~Scene(){
}
menuScene.cpp
#include "menuScene.h"
#include <iostream>void MenuScene::onEnter(){std::cout << "菜单场景进入" << std::endl;
}void MenuScene::onInput(const ExMessage& msg){
}void MenuScene::onUpdate(){std::cout << "菜单场景正在运行..." << std::endl;
}void MenuScene::onDraw(){outtextxy(10, 10, _T("菜单渲染内容"));
}void MenuScene::onExit(){std::cout << "菜单场景退出" << std::endl;
}
gameScene.cpp
#include "gameScene.h"
#include <iostream>void gameScene::onEnter(){std::cout << "游戏场景进入" << std::endl;
}void gameScene::onInput(const ExMessage& msg){
}void gameScene::onUpdate(){std::cout << "游戏场景正在运行" << std::endl;
}void gameScene::onDraw(){outtextxy(10, 10, _T("游戏绘制内容"));
}void gameScene::onExit(){std::cout << "游戏场景退出" << std::endl;
}