当前位置: 首页 > 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 ]
    ]

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

后续

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

相关文章:

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

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

Java基于微信小程序的校园外卖平台设计与实现,附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...

渗透工具及其知识库(个人笔记)

1.IP搜寻 查看kali网段&#xff1a; ip addr 、 ifconfig namp&#xff1a;nmap -sP xxx.xxx.xxx.0/24 netdiscover&#xff1a;netdiscover xxx.xxx.xxx.0/24 arp&#xff1a;arp-scan -l 2.端口扫描 粗略扫描&#xff1a;nmap <IP> 深度扫描&#xff1a; …...

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不生效&#xff1f; 如果主GUI程序使用“floating”,子GUI程序使用default动作&#xff0c;则子GUI无法打开到最前。子GUI程序只能使用“模态”才能置顶。 主GUI程序&#xff1a; 子GUI程序&#xff1a; 改正的方法很简单&#xff0c…...

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 都是前端状态管理库&#xff0c;分别用于 React 和 Vue.js 框架。 它们都提供了一套规范的状态管理机制&#xff0c;帮助开发者更好地组织和管理应用状态。下面是它们的一些异同点&#xff1a; 相同点&#xff1a; 中心化状态管理&#xff1a;两者都提…...

第十五届蓝桥杯省赛C/C++大学B组真题及赛后总结

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

【Qt踩坑】ARM 编译Qt5.14.2源码-QtWebEngine

1.下载源码 下载网站&#xff1a;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解释 &#xff1a; SQL中的CASE WHEN语句是一种条件表达式&#xff0c;它允许你根据不同的情况返回不同的值。CASE WHEN通常用于SELECT语句中&#xff0c;用于创建新的列&#xff0c;该列的值取决于其他列的值。CASE WHEN可以用于任何可以使用表达式的地方。 大致概…...

Project Euler_Problem 193_Few Repeated Digits_欧拉筛+容斥公式

解题思路&#xff1a;暴力搜索 代码&#xff1a; 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 * …...

排序算法-基数排序

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

ChatGPT在线网页版

ChatGPT镜像 今天在知乎看到一个问题&#xff1a;“平民不参与内测的话没有账号还有机会使用ChatGPT吗&#xff1f;” 从去年GPT大火到现在&#xff0c;关于GPT的消息铺天盖地&#xff0c;真要有心想要去用&#xff0c;途径很多&#xff0c;别的不说&#xff0c;国内GPT的镜像…...

5.SpringSpringBoot八股

Spring,Spring MVC,Spring Boot 之间什么关系? Spring就是整个Spring框架的整体&#xff0c;包含AOP、JDBC、Spring MVC等等模块 SpringBoot是Spring的精简版&#xff0c;它在Spring的基础上添加了自动装配、内置tomcat服务器等功能&#xff0c;使得代码量更少&#xff0c;同…...

0基础刷图论最短路 3(从ATcoder 0分到1800分)

AT最短路刷题3&#xff08;本文难度rated 1200~ 1400&#xff09; 题目来源&#xff1a;Atcoder 题目收集&#xff1a; https://atcoder-tags.herokuapp.com/tags/Graph/Shortest-Path &#xff08;里面按tag分类好了Atcoder的所有题目&#xff0c;类似cf&#xff09; &#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算法&#xff1a;原理、应用与安全 date: 2024/4/11 20:55:57 updated: 2024/4/11 20:55:57 tags: MD5算法数据安全哈希函数摘要算法安全漏洞SHA算法密码学 第一章&#xff1a;引言 导言 在当今数字化时代&#xff0c;数据安全和完整性变得至关重要。消息…...

架构师系列-搜索引擎ElasticSearch(三)- Java API

SpringBoot整合ES 搭建SpringBoot工程&#xff0c;引入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文件&#xff08;即解压&#xff09; ./android-ndk-r10c-linux-x86_64.bin Android-NDK的配置 要想使用Android-NDK&#xff0c;还需要进行环境变量…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...