文章配图:排序在下落算法中的关键作用

页面预览

前言

在重力下落算法中,排序顺序至关重要——必须先处理底部的猫咪再处理顶部的,否则会出现"穿透"现象。Array.sort() 配合比较函数实现自定义排序。

本文以 GameEngine.updateCats() 中的 sort((a,b) => b.y - a.y) 为锚点,讲解排序在下落算法中的关键作用。

提示:本系列不讲 ArkTS 基础语法与环境搭建,假设你已跟完第 1–122 篇。本篇是阶段四第 123 篇。

一、底部优先排序

1.1 排序代码

const sortedCats = Array.from(this.cats.values())
  .filter(cat => cat.falling)
  .sort((a, b) => b.y - a.y);  // y 从大到小(底部优先)

1.2 为什么要底部优先

初始状态:        底部优先处理:
y=0  [A]          y=3  [C] → 已到底部
y=1  [B]          y=2  [D] → 碰撞检测正常
y=2  [D]          y=1  [B] → 落在 D 上方
y=3  [C] → 底部   y=0  [A] → 落在 B 上方

如果顶部优先(a.y - b.y):
y=0  [A] → 移到 y=1(但 [B] 还在原位!)
→ 穿透!A 和 B 重叠

二、总结

sort 排序确保底部优先处理,避免下落过程中的穿透问题。

核心要点

  • sort((a,b) => b.y - a.y) 底部优先
  • 先处理底部猫咪,避免穿透

下一篇预告:第 124 篇将深入 forEach 遍历更新——迭代修改实战。

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


相关资源:

Logo

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

更多推荐