植物明星大乱斗1


能帮到你的话,就给个赞吧 😘


文章目录

scene.h

cpp 复制代码
#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;							//退出
};
cpp 复制代码
#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

cpp 复制代码
#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

cpp 复制代码
#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();

	//hertz
		auto excutionTime = GetTickCount64() - startTime;
		if (excutionTime < FPS)
			Sleep(FPS - excutionTime);
	}

	EndBatchDraw();

	delete menuScene;
}

scene.cpp

cpp 复制代码
#include "scene.h"

Scene::~Scene(){
}
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

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;
}
相关推荐
青少儿编程课堂1 分钟前
2026蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:堆排序与优先队列解析
c++·python·算法·bfs·信息学竞赛
j7~7 分钟前
【C++ 面试笔记】(篇二):类与数据抽象 & STL 容器与算法
开发语言·c++·面试·stl容器和算法·类和数据抽象
Fuyo_111925 分钟前
深入解析 C++ unordered_set 与 unordered_map 的核心特性与性能实战
开发语言·c++
码匠许师傅29 分钟前
【C++三方组件】FFmpeg:音视频处理的瑞士军刀
c++·ffmpeg·音视频
ShineWinsu1 小时前
对于Qt:QPushButton常见属性的解析
开发语言·c++·qt·api·gui·按钮·qpushbutton
Lhan.zzZ1 小时前
用 Qt 构建线程安全的通讯静态库:从线程亲和性到完整工程
c++·vscode·qt·tcp/ip·udp
xiaoye-duck1 小时前
《C++ 项目:手写大模型接入 SDK》DeepSeek接口设计(上):初始化和全量响应
开发语言·网络·c++·语言模型
fpcc1 小时前
跟我学c++中级篇—streambuf在glog中的应用分析
开发语言·c++
码匠许师傅2 小时前
【C++三方组件】OpenCV:计算机视觉的事实标准
c++
郝学胜-神的一滴2 小时前
游戏设计:原型与开发 17:数字化系统里的思维体操
人工智能·游戏·游戏程序·游戏策划·游戏设计