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

(三)C++自制植物大战僵尸游戏项目结构说明

植物大战僵尸游戏开发教程专栏地址icon-default.png?t=N7T8http://t.csdnimg.cn/ErelL


一、项目结构

打开项目后,在解决方案管理器中有五个项目,分别是libbox2dlibcocos2dlibrecastlibSpinePlantsVsZombies五个项目,除PlantsVsZombies外,其他四个是所用到的一些库文件,不需要深入探究。

例如:libbox2d是一个物理引擎库,libcocos2dCocos2d-x游戏开发框架,libSpine是一个骨骼动画库等。

PlantsVsZombies是我们自己开发的游戏项目,该项目依赖于上述的某些库文件。所以启动游戏时需要将PlantsVsZombies项目设置为启动项。

鼠标左键点击三角图案,打开项目结构目录。如下图所示。

其、对应的项目文件夹目标如下图所示 。

二、项目流程图

三、Class文件夹结构 

Class文件夹里面的代码就是开发该游戏所编写的所有代码。Class文件里面包含四个文件夹,分别是BasedPlantsScenesZombies,以及以PlantsVsZombies命名的C++头文件和源文件。


每个文件夹中所包含的代码文件所表示的内容如下表所示。

文件夹内容
Based存放游戏中使用到的一些基础代码文件
Plants存放所有植物类的代码文件
Scenes存放游戏中场景的代码文件
Zombies存放所有僵尸类的代码文件
PlantsVsZombies.h/.cpp游戏main函数文件,Windows版本启动游戏入口

四、Based文件夹

Based文件夹主要包含一些在游戏中常用到的一些类文件。比如对话框类音乐播放类全局变量类用户信息类关卡信息类等一些重要的文件。

五、Plants文件夹结构

Plants文件夹中存放所有植物相关代码文件。根据植物的不同特性,将其分为三类。分别是EmissionPlantsDefensePlantsBattlePlants。本文只介绍项目结构,植物的继承关系以及代码实现细节将在后续的教程中讲解。

1. EmissionPlants

EmissionPlants表示可以发射攻击的植物,例如豌豆射手卷心菜投手等植物,这类植物可以发射子弹,使用子弹进行攻击。所以在这个文件夹下还有一个Bullet文件夹,主要存放不同植物所发射的子弹。

2. DefensePlants

DefensePlants主要存放保护类植物,该类植物不直接产生攻击伤害,但是可以辅助其他植物,例如向日葵火炬树桩坚果墙等

3. BattlePlants 

BattlePlants主要存放攻击伤害较高的植物,此类植物一次攻击伤害高,攻击时间间隔较长或者只攻击一次。例如樱桃炸弹土豆雷火爆辣椒等植物。

4. 其他 

Plants.h/cpp文件是植物类的基类,所有植物都继承此类。这个类主要定义一些植物所共有的属性和方法。


Plants-files.h文件主要是用于引入植物类的头文件,当有类需要引入多个植物类时,只需要引入这个头文件即可。

六、Zombies文件夹结构 

 Zombies文件夹存放所有的僵尸类。

七、Scenes文件夹结构 

Scenes文件夹用于存放游戏场景相关的代码文件。在Cocos2d-x游戏框架中,游戏是有多个场景构成的,多个场景可以相互切换。每个场景包含许多Layer(层),每个层又可以包含多个Sprite(精灵)。游戏场景中的所有植物、僵尸、子弹等都可以看作为精灵。

游戏中包含多个场景,例如游戏的加载场景、主菜单场景、植物选择场景、游戏场景等等。在每一个场景中都包含了大量的代码文件。本文只介绍结构,后续会详细介绍相关是代码。

  1.  EasterEggsScene表示菜单场景;
  2.  GameScene表示游戏场景;
  3.  HelpScene表示帮助场景;
  4.  LoadingScene表示游戏资源加载场景;
  5.  MainMenuScene表示主菜单场景;
  6.  SelectPlantsScene表示植物选择场景;
  7.  WorldScene表示世界选择场景;

1.GameScene 

GameScene表示游戏场景,这个场景也是整个项目中最复杂的部分之一。里面包含了多个层,如动画层,主要用于显示动画。背景层用于显示背景。控制层主要定义了整个游戏的运行逻辑以及玩家游戏操作逻辑等。除此之外还有游戏结束层、信息层、按钮层等。这里就不一一介绍了,后会详细接收。

2.MainMenuScene 

...

八、后续 

下一篇会详细讲解游戏的启动流程,后续将会详细讲解某些重要代码文件中的实现细节。

http://www.lryc.cn/news/339529.html

相关文章:

  • 动态规划专练( 279.完全平方数)
  • 京东商品详情API接口(商品属性丨sku价格丨详情图丨标题等数据)
  • Springboot+Vue项目-基于Java+MySQL的校园周边美食探索及分享平台系统(附源码+演示视频+LW)
  • 折叠面板组件(vue)
  • 【Canvas技法】蓝底金字北岛诗节选(径向渐变色、文字阴影示例)
  • 【大语言模型】基础:TF-IDF
  • [开发日志系列]PDF图书在线系统20240415
  • 蓝桥杯 — — 纯质数
  • OpenCV基本图像处理操作(三)——图像轮廓
  • 比特币突然暴跌
  • 使用SpeechRecognition和vosk处理ASR
  • 【Go】通道:缓冲通道和非缓冲通道
  • Java中数组的使用
  • CAP5_Monday
  • 科大讯飞星火开源大模型iFlytekSpark-13B GPU版部署方法
  • SpringBoot基于RabbitMQ实现消息延迟队列方案
  • Go语言使用标准库时常见错误
  • UE5不打包启用像素流 ubuntu22.04
  • Redis 常用数据类型常用命令和应用场景
  • ins视频批量下载,instagram批量爬取视频信息
  • Canvas图形编辑器-数据结构与History(undo/redo)
  • 阿里云Centos7下编译glibc
  • UE5数字孪生系列笔记(四)
  • 品牌故事化:Kompas.ai如何塑造深刻的品牌形象
  • 5g和2.4g频段有什么区别
  • 交通管理在线服务系统|基于Springboot的交通管理系统设计与实现(源码+数据库+文档)
  • konva.js 工具类
  • php未能在vscode识别?
  • 解读MongoDB官方文档获取mongo7.0版本的安装步骤与基本使用
  • 【数据结构|C语言版】顺序表