植物明星大乱斗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;
}
相关推荐
召木27 分钟前
C++小白实习日记——Day 2 TSCNS怎么读取当前时间
c++·职场和发展
九州ip动态41 分钟前
模拟器多开限制ip,如何设置单窗口单ip,每个窗口ip不同
tcp/ip·游戏·媒体
St_Ludwig44 分钟前
C语言 蓝桥杯某例题解决方案(查找完数)
c语言·c++·后端·算法·游戏·蓝桥杯
Jack黄从零学c++1 小时前
opencv(c++)---自带的卷积运算filter2D以及应用
c++·人工智能·opencv
sweetheart7-71 小时前
LeetCode20. 有效的括号(2024冬季每日一题 11)
c++·算法·力扣··括号匹配
gma9992 小时前
brpc 与 Etcd 二次封装
数据库·c++·rpc·etcd
ö Constancy2 小时前
设计LRU缓存
c++·算法·缓存
C++忠实粉丝2 小时前
计算机网络socket编程(2)_UDP网络编程实现网络字典
linux·网络·c++·网络协议·计算机网络·udp
Mongxin_Chan3 小时前
【Cpp】指针与引用
c++·算法
SSL_lwz3 小时前
P11290 【MX-S6-T2】「KDOI-11」飞船
c++·学习·算法·动态规划