HarmonyOS应用开发实战:猫猫大作战-排序在下落算法中的关键作用
·


前言
在重力下落算法中,排序顺序至关重要——必须先处理底部的猫咪再处理顶部的,否则会出现"穿透"现象。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 遍历更新——迭代修改实战。
如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!
相关资源:
更多推荐


所有评论(0)