(三)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.hqwc.cn/news/620514.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构--选择排序

1、选择排序 1.1 基本认识 1.1.1 基本概念 选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n) 的时间复杂度。 1.1.2 算法步骤 (1)首先在未排序序列中找到最小(大)元素,存放到排序序列的起…

linnux文件服务

1.FTP:文件传输协议。 基础:控制端口(身份验证) command 21/tcp 数据端口: data 20/tcp FTP Server默认配置:yum -y install vsftpd (安装vsftpd) touch /var/ftp/abc.txt(创建文件) systemctl start vsftpd(启动文件) systemctl …

C# 关于进程回收管理的一款工具设计与分享

目录 设计初衷 开发运行环境 Craneoffice ProcessGC 运行主界面 管理任务与策略 其它设置 移动存储设备管理 核心代码-计时器监控 小结 设计初衷 在使用 COM 模式操作 OFFICE 组件的开发过程中,当操作完相关文档后,在某些情况下仍然无法释放掉…

内网渗透-红队内网渗透工具(Viper)

红队内网渗透工具(Viper) 最近发现一款很强大的内网渗透工具Viper 接下来我给大家介绍一下具体的安装过程,这里我在kali上进行安装 (1)首先打开kali终端,切换到root用户,确认以下操作都在root用户下操作,sudo -s 安装…

MySQL排序你真的掌握了吗?5个问题考考你

测试sql数据 CREATE TABLE student (id int NOT NULL AUTO_INCREMENT,name varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,age int DEFAULT NULL,money int DEFAULT NULL,PRIMARY KEY (id) USING BTREE,KEY index_name (age) ); INSERT INTO st…

图像分割:Pytorch实现UNet++进行医学细胞分割

图像分割:Pytorch实现UNet进行医学细胞分割 前言相关介绍项目结构具体步骤准备数据集读取数据集设置并解析相关参数定义网络模型定义损失函数定义优化器训练验证 参考 前言 由于本人水平有限,难免出现错漏,敬请批评改正。更多精彩内容&#x…

react项目规范新手教程

简介 React是一种流行的JavaScript库,用于构建用户界面。搭建一个React项目并不难,但确保项目的结构和配置正确可以帮助你更有效地开发和维护应用程序。以下是搭建React项目的一些步骤: 项目规范:项目中有一些开发规范和代码风格…

【计算机毕业设计】4S店车辆管理系统——后附源码

🎉**欢迎来到我的技术世界!**🎉 📘 博主小档案: 一名来自世界500强的资深程序媛,毕业于国内知名985高校。 🔧 技术专长: 在深度学习任务中展现出卓越的能力,包括但不限于…

Oracle 11g完全卸载教程(Windows)

文章目录 一、停止Oracle服务二、卸载Oracle1、卸载Oracle产品2、删除注册表3、删除环境变量以及其余文件 一、停止Oracle服务 进入服务 找到服务中的Oracle服务并且停止 全部停止运行成功 二、卸载Oracle 1、卸载Oracle产品 点击开始菜单找到Oracle,然后点击…

打破常规:AI如何帮助从业者规避营销活动风险

人工智能时代:如何利用AI提升营销效果 在当今商界,市场策划活动对于企业来说至关重要,它们不仅可以吸引消费者的注意,还可以扩大企业的市场份额。然而,这些活动本身带来的风险也不容忽视。为了帮助企业在策划活动时做出…

芯片封测:从入门到精通

💂 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】🤟 一站式轻松构建小程序、Web网站、移动应用:👉注册地址🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交…

1.C++入门

1.关键字(C98) 2.命名空间 在 C/C 中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存 在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是 对标识符的名称进行本地化 &#xff…