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 篇:连击窗口