HarmonyOS应用开发实战:猫猫大作战-合并升级算法
前言
在「猫猫大作战」中,当检测到同级猫咪相邻时,合并后等级提升——SMALL(1) + SMALL(1) → MEDIUM(2)。利用枚举的数值特性,cat.level + 1即可实现等级递增。
本文以GameEngine.tryMergeAt()中的等级提升逻辑为锚点,讲解合并升级算法。
提示:本系列不讲 ArkTS 基础语法与环境搭建,假设你已跟完第 1–125 篇。本篇是阶段四第 126 篇。
一、等级提升逻辑
1.1 核心代码
// 至少 MERGE_COUNT 个同等级邻居 if (sameLevelNeighbors.length >= GameConfig.MERGE_COUNT) { const newLevel = (cat.level + 1) as CatLevel; // 等级 +1 const newCat: Cat = { id: `cat_${this.catCounter++}`, level: newLevel, // 升级后的等级 x: x, y: y, falling: false }; // ... 移除旧猫咪、放置新猫咪 }1.2 等级链
SMALL(1) + SMALL(1) → MEDIUM(2) MEDIUM(2) + MEDIUM(2) → LARGE(3) LARGE(3) + LARGE(3) → XLARGE(4) XLARGE(4) + XLARGE(4) → SUPER(5) SUPER(5) + SUPER(5) → LEGENDARY(6)二、限制最高等级
if (cat && !cat.falling && cat.level < CatLevel.LEGENDARY) { // 传奇猫不能再升级 if (this.tryMergeAt(x, y)) { merged = true; } }三、总结
利用枚举的数值特性实现level + 1等级提升,配合边界检查限制最高等级。
核心要点:
(cat.level + 1) as CatLevel实现等级递增cat.level < CatLevel.LEGENDARY限制最高等级
下一篇预告:第 127 篇将深入连击窗口判定——COMBO_WINDOW 时间窗。
如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!
相关资源:
- GameEngine 完整源码
- 开源鸿蒙跨平台社区
- 第 125 篇:合并检测
- 第 127 篇:连击窗口
