植物明星大乱斗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;
}
相关推荐
讳疾忌医丶6 小时前
深度拆解 RocksDB 内核:基于 C++17 的 FIFO 调度状态机与温度阶梯自愈设计
java·c++·算法·架构
2401_868534786 小时前
OpenStack 架构全景:八个核心组件深度拆解
c++·需求分析
软件课代表CiCi6 小时前
运行库是什么?电脑缺运行库怎么办?c++运行库缺失修复全攻略
开发语言·c++·windows·电脑·dll修复·dll丢失·运行库
一孤程7 小时前
游戏测试专题第四篇:游戏性能测试实战-帧率/内存/发热全覆盖
游戏·测试
蒸蒸yyyyzwd7 小时前
从面经中学到的三件事
c++·笔记
时时三省8 小时前
【时时三省】计算机c语言二级考试选择题重点
c++
ThornArmor10 小时前
重铸1996|肉体渲染:关节的裂缝:分段模型积木拼装与未成熟的 RSP 矩阵骨骼动画形变
c语言·汇编·c++·python·硬件架构·游戏机
Elsa️74612 小时前
算法一周刷题总结
c++·算法
小小数媒成员12 小时前
如何优化代码适应托管内存?
游戏·unity·游戏引擎
风合星语12 小时前
2026 机器人工程实例(五):让 Allegro Hand 在 MuJoCo 中完成接触抓取——抓取状态机、稳定抬升与受控释放
c++·python·机器人·仿真