(六)C++自制植物大战僵尸游戏关卡数据讲解
植物大战僵尸游戏开发教程专栏地址http://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 ]
]表示不可种植区域,是一个二维数组,存放多个位置坐标。游戏类型的一种。
后续
下一篇将讲解读取关卡数据的详细代码细节。
相关文章:

(六)C++自制植物大战僵尸游戏关卡数据讲解
植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/xjvbb 游戏关卡数据文件定义了游戏中每一个关卡的数据,包括游戏类型、关卡通关奖励的金币数量、僵尸出现的波数、每一波出现僵尸数量、每一波僵尸出现的类型等。根据不同的游戏类型,定义了不同的通…...

Java基于微信小程序的校园外卖平台设计与实现,附源码
博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...
渗透工具及其知识库(个人笔记)
1.IP搜寻 查看kali网段: ip addr 、 ifconfig namp:nmap -sP xxx.xxx.xxx.0/24 netdiscover:netdiscover xxx.xxx.xxx.0/24 arp:arp-scan -l 2.端口扫描 粗略扫描:nmap <IP> 深度扫描: …...

MongoDB的使用
一、Spring Boot集成MongoDB 1 引用依赖包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency> 2 配置文件配置mongodb资料 # MongoDB连接信息 spring.…...

labview中FP.isFrontmost不生效?
主GUI界面中调用子GUI程序FP.isFrontmost不生效? 如果主GUI程序使用“floating”,子GUI程序使用default动作,则子GUI无法打开到最前。子GUI程序只能使用“模态”才能置顶。 主GUI程序: 子GUI程序: 改正的方法很简单,…...
Vela-OS: 记录一个class层,处理MSC协议的bug
一、关于USC-MSC类设备驱动层,处理SCSI指令的代码逻辑问题 1. 源文件 \nuttx\drivers\usbdev\usbmsc_scsi.c 2. 问题描述 对于INQUIRY指令,长度一般是6个字节,cdblen字段嵌入在CBW数据包中,如下: 命令阶段的CBW数据包: 55 53 42 43 60 2a c0 8b 24 00 00 00 0x80 0x…...

跨框架探索:React Redux 和 Vuex 对比分析快速掌握React Redux
React Redux 和 Vuex 都是前端状态管理库,分别用于 React 和 Vue.js 框架。 它们都提供了一套规范的状态管理机制,帮助开发者更好地组织和管理应用状态。下面是它们的一些异同点: 相同点: 中心化状态管理:两者都提…...

第十五届蓝桥杯省赛C/C++大学B组真题及赛后总结
目录 个人总结 C/C 组真题 握手问题 小球反弹 好数 R 格式 宝石组合 数字接龙 爬山 拔河 编辑 再总结及后续规划 个人总结 第一次参加蓝桥杯,大二,以前都在在学技术,没有系统的学过算法。所以,还是花了挺多时间去备…...

【Qt踩坑】ARM 编译Qt5.14.2源码-QtWebEngine
1.下载源码 下载网站:Index of /new_archive/qt/5.14/5.14.2/single 2.QWebEngine相关依赖 sudo apt-get install flex libicu-dev libxslt-dev sudo apt-get install libssl-dev libxcursor-dev libxcomposite-dev libxdamage-dev libxrandr-dev sudo apt-get …...

SQL语法 case when语句用法讲解
CASE WHEN解释 : SQL中的CASE WHEN语句是一种条件表达式,它允许你根据不同的情况返回不同的值。CASE WHEN通常用于SELECT语句中,用于创建新的列,该列的值取决于其他列的值。CASE WHEN可以用于任何可以使用表达式的地方。 大致概…...

Project Euler_Problem 193_Few Repeated Digits_欧拉筛+容斥公式
解题思路:暴力搜索 代码: void solve() {ll i, j,k,x,y,z,p,q,u,v,l,l1;N 999966663333, NN 1024;//N 1000;double a, b, c,d;M.NT.get_prime_Euler(1000000);l M.NT.pcnt;for (i 1; i < l; i) {u M.NT.prime[i];v M.NT.prime[i 1];x u * …...

排序算法-基数排序
基数排序是一种非比较排序算法,它将待排序的数字按照位数进行排序。基数排序的思想是先按照个位数进行排序,然后按照十位数进行排序,接着按照百位数进行排序,以此类推,直到最高位排序完成。 基数排序的步骤如下&#x…...

ChatGPT在线网页版
ChatGPT镜像 今天在知乎看到一个问题:“平民不参与内测的话没有账号还有机会使用ChatGPT吗?” 从去年GPT大火到现在,关于GPT的消息铺天盖地,真要有心想要去用,途径很多,别的不说,国内GPT的镜像…...
5.SpringSpringBoot八股
Spring,Spring MVC,Spring Boot 之间什么关系? Spring就是整个Spring框架的整体,包含AOP、JDBC、Spring MVC等等模块 SpringBoot是Spring的精简版,它在Spring的基础上添加了自动装配、内置tomcat服务器等功能,使得代码量更少,同…...
0基础刷图论最短路 3(从ATcoder 0分到1800分)
AT最短路刷题3(本文难度rated 1200~ 1400) 题目来源:Atcoder 题目收集: https://atcoder-tags.herokuapp.com/tags/Graph/Shortest-Path (里面按tag分类好了Atcoder的所有题目,类似cf) &#x…...
k8s+docker一键安装过程
环境: k8s 1.20 docker 20.10 centos7.9 #docker安装 yum install -y epel-release yum install -y yum-utils yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo yum install -y docker-ce-20.10.6 docker-ce-cli-2…...
Python3+Appium+Android SDK+真机+实现app自动化测试-基于Red Hat7.9版本搭建环境及运行python脚本。
1、总体概述? 收费有收费的服务,那就是细致。Red Hat9.0自动化环境也有,需要的说一声。 1、实现在Red Ha/t Enterprise Linux7.9环境中搭建部署app自动化测试环境,提供详细步骤。 2、版本说明:jdk8/17+nodejs16/18/19/20/21+android sdk29+python3.9.18/3.11.1+appium1…...

深入理解MD5算法:原理、应用与安全
title: 深入理解MD5算法:原理、应用与安全 date: 2024/4/11 20:55:57 updated: 2024/4/11 20:55:57 tags: MD5算法数据安全哈希函数摘要算法安全漏洞SHA算法密码学 第一章:引言 导言 在当今数字化时代,数据安全和完整性变得至关重要。消息…...
架构师系列-搜索引擎ElasticSearch(三)- Java API
SpringBoot整合ES 搭建SpringBoot工程,引入ElasticSearch相关坐标 <!--引入es的坐标--><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><versi…...

Ubuntu下配置Android NDK环境
Android-NDK的下载 下载Android-NDK wget -c http://dl.google.com/android/ndk/android-ndk-r10e-linux-x86_64.bin 执行bin文件(即解压) ./android-ndk-r10c-linux-x86_64.bin Android-NDK的配置 要想使用Android-NDK,还需要进行环境变量…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...

cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...