文章配图:合并升级算法

页面预览

前言

在「猫猫大作战」中,当检测到同级猫咪相邻时,合并后等级提升——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 时间窗。

如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!


相关资源:

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐