(六)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 ]
    ]

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

后续

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/545649.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ATA-214高压放大器用在哪些实验中使用的

高压放大器在科学实验和工程应用中扮演着关键角色。它是一种能够将低电压信号放大到高电压水平的设备。这种放大器通常用于需要处理高电压信号的实验和应用中。以下是高压放大器在各种实验中的应用范围。 粒子物理实验:在粒子物理实验中,科学家使用高压放…

【分享】3种方法取消Word文档的“打开密码”

我们知道,Word文档可以设置“打开密码”,防止文档被随意打开,那后续不需要密码保护了,要怎么取消呢?不小心把密码忘记了还可以取消吗?不清楚的小伙伴一起来看看吧! 如果是Word文档不再需要密码…

Python Flask-Security- 构建安全而强大的Web应用

Flask-Security是一个基于Flask的安全扩展,为开发者提供了构建安全且强大的Web应用的工具。本文将深入探讨Flask- Security的核心功能、基本用法以及在实际应用中的一些高级特性,通过丰富的示例代码,助您更全面地了解和应用这一用于Web应用安…

windows的jar包开机自启动【搬代码】

感觉最方便的就是放到启动项目里操作步骤 winR 输入:shell:startup回车或点击确定 3.将自己jar包右键创建快捷方式 4.然后放进去 5.重启电脑,浏览器输入网址,就可以看到重启成功了 另外一个就是放入.exe文件的快捷方式 首先,…

docker安装nessus服务及使用

Nessus 是目前全世界最多人使用的系统漏洞扫描与分析软件,现在软件服务越来越多,越来越复杂,涉及的数据也更多;因此系统完成后对于系统漏洞的检测并对其进行修改十分有必要,本文介绍通过docker安装nessus服务及简单的使…

15 Python进阶: random和pyecharts

Python random 模块主要用于生成随机数。 random 模块实现了各种分布的伪随机数生成器。 要使用 random 函数必须先导入: import randompython random 模块的一般用法 Python中的random模块提供了生成伪随机数的功能,可以用于模拟、游戏开发、密码学…

关于centos8自带的apache2.4开启https后,XP系统的IE8无法显示网页的问题

经检验,是因为系统的apache和openssl版本太高导致的。 禁用系统默认的apache2.4,自己重新源码编译安装一套openssl-1.0.1fapache2.2.23php7.1.2即可。跟update-crypto-policies没有关系,可保持默认的DEFAULT状态。 关于centos8自带的apache2…

多无人机集群协同避障

matlab2020a正常运行 场景1规划结果 场景2规划结果 场景3规划结果 代码地址: 多无人机集群协同避障效果(5架)资源-CSDN文库

解锁生成式 AI 的力量:a16z 提供的 16 个企业指南

企业构建和采购生成式AI方面的16项改变 生成式 AI 领域趋势洞察:企业构建和采购生成式 AI 的方式正在发生重大转变,具体表现在:* 专注于可信度和安全性:75% 的企业将信任和安全性视为关键因素。* 优先考虑可扩展性和灵活性&#x…

unity shader学习练笔日记(三)

1、单张纹理 Shader "Unity Shaders Study/Day Three/SingleTexture" {Properties{_Color("Colot Tint", Color) (1, 1, 1, 1)//2D是纹理属性的声明方式。以一个字符串后跟一个花括号作为它的初始值,"white"是内置纹理的名字&#…

内网渗透-域环境的搭建

域环境的搭建 文章目录 域环境的搭建前言一、什么是域环境 什么是域内网基础知识点 二、域环境的搭建 1. 部署域结构2.如何加入域3.SRV出错及解决办法4.SRV记录注册不成功的可能原因 禁用域中的账户将计算机退出域添加域用户总结 前言 一、什么是域环境 什么是域 域是一种管…

5.Pytest自动化测试框架(1)

1.Pytest框架 Pytest框架是Python的一种单元测试框架,与Python自带的unittest框架类似,但比unittest框架更简洁,效率更高 2.设置 3.Pytest命名规范 (1)Pytest测试文件必须以test_开头,或以_test结尾 &am…

普乐蛙VR神州飞船设备VR太空舱体验馆VR博物馆

中国航天式浪漫知多少?千百年来古人对浩瀚宇宙有着无尽的浪漫想象,而在一代又一代中国航天事业奋斗者的努力中,远古神话不再是幻想,它终被照进现实——中国载人飞船“神舟”、中国载人空间站“天宫”、中国绕月人造卫星“嫦娥一号…

经验分享,京东平台如何实现一键下载商品图片

在京东平台,产品图片制作至关重要。精良的图片能瞬间抓住消费者眼球,激发购买兴趣,它是消费者无法触摸实物情况下对商品的第一感知源,高质量的图片配合适当的图文排版,既有利于提升店铺形象,又能通过视觉传…

通过注解实现接口入参检查

valid 通过注解实现接口入参检查 前言一、引入依赖二、使用步骤1.创建入参对象 request2.提供一个接口 controller3.全局异常捕获 GlobalExceptionHandler4.执行结果 总结 前言 作为一个后端开发,一般是不单独对接口参数的每个入参进行长度、最大值、最小值判断。 …

一款功能齐全的iOS混淆工具介绍及功能详解

机缘巧合偶遇iOS马甲包业务,前期也使用过目前市面上其他得工具,实际效果不太理想。经过大量实践,开发出一款功能齐全的混淆工具。工具的主要功能OC、C、Swift已封装成Mac应用,其他功能还在封装中,敬请期待。 马甲包的本…

YoloV8改进策略:Block改进|轻量级的Mamba打造优秀的YoloV8|即插即用,简单易懂|附Block结构图|检测、分割、关键点均适用(独家原创)

摘要 无Mamba不狂欢,今天给大家带来一个基于轻量级Mamba的改进。模块简单易懂,即插即用! 带领大家去征服更高的领域。 论文:《LightM-UNet:Mamba 辅助的轻量级 UNet 用于医学图像分割》 https://arxiv.org/pdf/2403.05246.pdf UNet及其变体在医学图像分割中得到了广泛…

英语技术会议常用语

个人整理。 自我介绍: Hello everyone, Im [Your Name], and Im excited to be here today. I work as [Your Position] at [Your Company/Organization], where I focus on [Brief Description of Your Role or Expertise]. Im looking forward to our discussion…

新火种AI|加密+AI,究竟是一场交易幻景,真正的价值提升?

作者:小岩 编辑:彩云 说起当下最热门的两个发展方向,非区块链和AI两大模块莫属。乍一看上去,这两个科技赛道并没有什么交集,甚至分属技术谱系的两个极端:一个是在封闭数据平台上培育中心化的智能&#xf…

Linux Crontab定时任务介绍及检测思路分析

一、Cron介绍 1、定义 crontab为Linux下的计划任务程序,对应的服务为crond。crond是一个守护进程,每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。Linux系统上面原本就有非常多的计划性工作&#xff…