植物明星大乱斗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;
}
相关推荐
夏天匆匆2过24 分钟前
linux性能提升之sendmmsg和recvmmsg
linux·c++·单片机·网络协议·udp·tcp
Jack黄从零学c++33 分钟前
设计模式——策略模式(c++)
c++·设计模式·策略模式
MinBadGuy1 小时前
【GeekBand】C++设计模式笔记10_Prototype_原型模式
c++·设计模式·原型模式
GeekAlice1 小时前
算法笔记/USACO Guide GOLD金组Graphs并查集Disjoint Set Union
c++·经验分享·笔记·学习·算法
風清掦3 小时前
C/C++每日一练:编写一个查找子串的位置函数
c语言·c++·算法
WolvenSec3 小时前
C/C++逆向:结构体逆向分析
c语言·开发语言·c++·网络安全
A charmer3 小时前
算法每日双题精讲——滑动窗口(最大连续1的个数 III,将 x 减到 0 的最小操作数)
c++·算法·leetcode
娅娅梨6 小时前
C++ 错题本 MAC环境下 unique_lock try_lock_for函数爆红问题
开发语言·c++·macos
李元豪10 小时前
【智鹿空间】c++实现了一个简单的链表数据结构 MyList,其中包含基本的 Get 和 Modify 操作,
数据结构·c++·链表
UestcXiye10 小时前
《TCP/IP网络编程》学习笔记 | Chapter 9:套接字的多种可选项
c++·计算机网络·ip·tcp