当前位置: 首页 > article >正文

植物明星大乱斗1


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


文章目录

  • 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();

	//hertz
		auto 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;
}


http://www.kler.cn/a/387357.html

相关文章:

  • Python 小高考篇(2)字符串
  • Android OpenGL ES详解——纹理:纹理过滤GL_NEAREST和GL_LINEAR的区别
  • 【前端】HTML标签汇总
  • 一文了解 Tableau 2024.3 如何展现已发布数据源的数据模型
  • Fortran安装(vscode+gcc+Python)
  • ESLint 使用教程(四):ESLint 有哪些执行时机?
  • 利用AI工具进行论文数据收集
  • 了解GPT大模型,读这本书就够了!(文末送书)
  • 【模块化大作战】Webpack如何搞定CommonJS与ES6混战(1-3)
  • 【网络】深入理解 HTTPS:确保数据传输安全的核心协议
  • 今天要重新认识下注解@RequestBody
  • IDEA构建JavaWeb项目,并通过Tomcat成功运行
  • 【快速入门】Kafka的安装部署
  • 关于QUERY_ALL_PACKAGES权限导致Google下架apk
  • LLM大模型学习精华系列:VLLM性能优化部署实践——全面加速从推理到部署的流程
  • 【ESP】一小时速通入门笔记
  • 【数据处理】数据预处理·数据变换(熵与决策树)
  • AI 写作(五)核心技术之文本摘要:分类与应用(5/10)
  • Sigrity SPEED2000 Power Ground Noise Simulation模式如何进行电源地噪声分析操作指导-SODIMM
  • SQLAlchemy 介绍与实践
  • 【软件测试】需求的概念和常见模型(瀑布、螺旋、增量、迭代)
  • 使用SpringBoot构建可扩展的在线教育平台
  • 力扣17-电话号码的数字组合
  • 【前端】Svelte:Store 状态管理
  • 编程语言之战:AI 之后的 Kotlin 与 Java
  • 【DM系列】DM 集成 JDBC 开发指南