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

(六)C++自制植物大战僵尸游戏关卡数据讲解

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


游戏关卡数据文件定义了游戏中每一个关卡的数据,包括游戏类型、关卡通关奖励的金币数量、僵尸出现的波数、每一波出现僵尸数量、每一波僵尸出现的类型等。根据不同的游戏类型,定义了不同的通关要求,例如最多使用小车的数量、不可种植的位置、最多使用的植物数量等。

关卡数据文件位置

关卡数据文件在资源文件的Text文件夹中。位置如下图所示。

GAMEWORLD_1DATAS.reanim.compiled           简单模式的关卡数据已加密文件
GAMEWORLD_1DATAS.reanim1.compiled         简单模式的关卡数据未加密文件

GAMEWORLD_1DATAS_DIF.reanim.compiled    困难模式的关卡数据已加密文件

GAMEWORLD_1DATAS_DIF.reanim1.compiled  困难模式的关卡数据已加密文件

文件有已加密和未加密两个版本,游戏中可以选择加载不同的版本,关于加载代码请看上一篇教程有详细讲解。 

数据解释

打开未加密的关卡数据文件如下图所示。文件是一个json格式文件,定义了关卡中的相关数据。

 "Level_1": {"IsEncryption": false,"UserLose": 430,"CoinNumbers": 50,"Frequency": 5,"ZombiesType": [ 1 ],"MunchZombiesFrequency": [],"FirstFrequencyTime": 18,"GameType": [ 3 ],"CarNumbers": 5,"UserPlantsNumbers": 10,"ZombiesNumbers": [ 1, 3, 3, 3, 10 ],"ZombiesTypeProbability": [[ 100, 0, 0 ],[ 100, 0, 0 ],[ 100, 0, 0 ],[ 100, 0, 0 ],[ 100, 0, 0 ]]},

"IsEncryption": false 

表示是否加密,该字段在游戏未使用,可以忽略。

"UserLose": 430

表示当僵尸在地图上向左移动小于430像素的位置就表示玩家失败。

"CoinNumbers": 50

表示玩家成功通关后金币奖励的基数。关卡金币奖励数量不是定值,奖励金币数量会根据该基数值进行计算。

"Frequency": 5

表示这一关卡总的僵尸波数。这里表示这一关会有5波僵尸出现。

"ZombiesType": [ 1 ]

表示僵尸类型,它是一个数组。僵尸的类型定义在Zombies.h代码文件中。

/* 僵尸类型 */
enum class ZombiesType
{None = 0,CommonZombies,ConeZombies,BucketZombies,CommonDoorZombies,ConeDoorZombies,BucketDoorZombies,LmpZombies,CommonFlagZombies,ConeFlagZombies,BucketFlagZombies,CommonDoorFlagZombies,ConeDoorFlagZombies,BucketDoorFlagZombies,SnowZombies
};

"MunchZombiesFrequency": []

表示大波僵尸的波数,它是一个数组,可以为空,如果值定义为 [1,5] 就表示在第1波和第5波会出现大量僵尸,定义后会在关卡的进度条上显示一个小旗子。

"FirstFrequencyTime": 18

表示从进入关卡开始到僵尸第一波出现的时间,单位为秒。时间到达就会刷新第一波僵尸,并播放僵尸出现音效。

"ZombiesNumbers": [ 1, 3, 3, 3, 10 ]

表示每一波僵尸的数量,它是一个数组,数组里面的数量与"Frequency"定义的值是对应的。

"ZombiesTypeProbability": [
      [ 100, 0, 0 ],
      [ 100, 0, 0 ],
      [ 100, 0, 0 ],
      [ 100, 0, 0 ],
      [ 100, 0, 0 ]
    ]

表示每一波种每一类僵尸出现的概率。它是一个二维数组。

"GameType": [ 3 ]

表示定义的游戏类型。它是一个数组。定义不同的游戏类型需要额外的数据信息。数组中的值类型定义如下。

enum class GameTypes
{None = -1,CreateWall,AtLeastSunNumbers,FlowerPosition,CarNumbers,UserPlantsNumbers,ZombiesInvisible,SmallZombies,BigZombies,NoPlants,UserLose
};

"CarNumbers": 5

这是游戏类型的一种,表示游戏通关结束,需要至少保留的小车数量。

"UserPlantsNumbers": 10 

这是游戏类型的一种,表示这一关卡最多使用的植物数量。

"FlowerPosition": 5

表示花坛的位置,数值表示所在列。游戏类型的一种。

"AtLeastSunNumbers":1000

表示在通关结束之前至少产生的阳光数量。游戏类型的一种。

"NoPlants": [
      [ 4, 2 ],
      [ 4, 3 ],
      [ 2, 4 ],
      [ 0, 2 ],
      [ 0, 3 ],
      [ 1, 1 ],
      [ 2, 0 ],
      [ 3, 1 ]
    ]

表示不可种植区域,是一个二维数组,存放多个位置坐标。游戏类型的一种。

后续

下一篇将讲解读取关卡数据的详细代码细节。

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

相关文章:

  • Java基于微信小程序的校园外卖平台设计与实现,附源码
  • 渗透工具及其知识库(个人笔记)
  • MongoDB的使用
  • labview中FP.isFrontmost不生效?
  • Vela-OS: 记录一个class层,处理MSC协议的bug
  • 跨框架探索:React Redux 和 Vuex 对比分析快速掌握React Redux
  • 第十五届蓝桥杯省赛C/C++大学B组真题及赛后总结
  • 【Qt踩坑】ARM 编译Qt5.14.2源码-QtWebEngine
  • SQL语法 case when语句用法讲解
  • Project Euler_Problem 193_Few Repeated Digits_欧拉筛+容斥公式
  • 排序算法-基数排序
  • ChatGPT在线网页版
  • 5.SpringSpringBoot八股
  • 0基础刷图论最短路 3(从ATcoder 0分到1800分)
  • k8s+docker一键安装过程
  • Python3+Appium+Android SDK+真机+实现app自动化测试-基于Red Hat7.9版本搭建环境及运行python脚本。
  • 深入理解MD5算法:原理、应用与安全
  • 架构师系列-搜索引擎ElasticSearch(三)- Java API
  • Ubuntu下配置Android NDK环境
  • 使用 vue3-sfc-loader 加载远程Vue文件, 在运行时动态加载 .vue 文件。无需 Node.js 环境,无需 (webpack) 构建步骤
  • stm32移植嵌入式数据库FlashDB
  • Ubuntu 安装Java、Git、maven、Jenkins等持续集成环境
  • 文件批量重命名并批量修改文件扩展名,支持随机大小写字母命名并修改扩展名字母
  • 【管理咨询宝藏70】MBB大型城投集团内外部环境分析报告
  • 服务器挖矿病毒解决ponscan,定时任务解决
  • 【鸿蒙开发】第二十一章 Media媒体服务(二)--- 音频播放和录制
  • 网络安全从入门到精通(特别篇I):Windows安全事件应急响应之Windows应急响应基础必备技能
  • 基于SpringBoot+Mybatis框架的私人影院预约系统(附源码,包含数据库文件)
  • 【SERVERLESS】AWS Lambda上实操
  • IDEA2023 开发环境配置