HarmonyOS应用开发实战:猫猫大作战-merge-chain 循环合并链
前言在「猫猫大作战」中当三只同级猫咪合并为一只高级猫后新猫可能与周围的同级猫再次触发合并——这就是循环合并链。递归合并是本游戏的核心爽感来源之一一次投放可能触发 3-5 次连锁合并。一、递归合并实现privatetryMergeAt(x:number,y:number):boolean{constcatthis.board[y][x];if(!cat||cat.falling)returnfalse;constneighborsthis.findSameLevelNeighbors(x,y,cat.level);if(neighbors.length2)returnfalse;// 1. 移除三只同级猫constcatsToRemove[{x,y},...neighbors.slice(0,2)];this.removeCats(catsToRemove);// 2. 升级constnewLevelcat.level1;this.createCatAt(x,y,newLevel);// 3. 计分this.scorethis.calculateMergeScore(cat.level,this.combo.multiplier);// 4. 递归检测if(this.tryMergeAt(x,y)){console.info(递归合并继续: (${x},${y}) 升级到${newLevel1});}returntrue;}二、链式合并示例投放前 (2,3): Lv.1 (2,4): Lv.1 (2,5): Lv.1 (2,6): Lv.2 (2,7): Lv.2 投放 Lv.1 到 (2,3) → 合并 Lv.1×3 → Lv.2新猫在 (2,4) ↓ 递归 Lv.2 与 (2,6)(2,7) 合并 → Lv.3新猫在 (2,5) ↓ 得分: 10 30 40无连击 或: 10 60 702s 内连击 2x三、性能控制privatereadonlyMAX_CHAIN10;// 防止无限递归privatetryMergeAtWithLimit(x:number,y:number,depth:number0):boolean{if(depththis.MAX_CHAIN){console.warn(合并链超限强制终止);returnfalse;}// ... 合并逻辑 ...returnthis.tryMergeAtWithLimit(x,y,depth1);}参数值说明MAX_CHAIN10最大递归深度触发条件每次合并后检测新位置级联结束条件无同级相邻猫或超限终止四、得分累积// 链式合并的得分每次合并独立计分受连击倍率影响// Lv.1→Lv.2: 10 × combo// Lv.2→Lv.3: 30 × combo// Lv.3→Lv.4: 90 × combo// ...// 如果链式合并 4 次1→5且全程 5x 连击// (103090270) × 5 2000 分五、最佳实践递归深度限制防止无限递归每次合并独立计分链中每次合并都受连击倍率影响移除后再创建先移除旧猫再创建新猫避免干扰检测动画分离合并动画与逻辑分离动画异步播放总结循环合并链通过递归实现级联合并一次投放可能触发多次升级。核心要点递归调用tryMergeAt、MAX_CHAIN限制深度、 每次合并独立计分、 移除→创建→递归三步。如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力相关资源GameEngine 源码第 129 篇score-formula第 131 篇place-remove第 132 篇game-over

相关新闻

KKCE:路由追踪技术实战从网络诊断到安全防御的全场景应用-快快测

KKCE:路由追踪技术实战从网络诊断到安全防御的全场景应用-快快测

在分布式架构日益普及的今天,业务系统的稳定性往往不再取决于单台服务器的性能,而是受制于错综复杂的网络链路。很多开发者都遇到过这样的场景:本地测试一切正常,代码逻辑无懈可击,但一旦部署到生产环境,用…

2026/10/14 7:29:08 阅读更多 →
索尼FE 70-200mm f/2.8 GM II评测:轻量化远摄镜头的全面革新

索尼FE 70-200mm f/2.8 GM II评测:轻量化远摄镜头的全面革新

如果你是一位专业摄影师,最近正在为索尼全画幅微单系统挑选一支"万金油"远摄变焦镜头,那么索尼FE 70-200mm f/2.8 GM II(型号SEL70200G2)这个名字一定反复出现在你的备选清单中。作为索尼G大师镜头家族中最重要的专业级…

2026/10/14 4:14:30 阅读更多 →
OLAP 数据库混进 OLTP 链路:一次 ClickHouse 拖死 API 101 分钟的复盘

OLAP 数据库混进 OLTP 链路:一次 ClickHouse 拖死 API 101 分钟的复盘

📝 摘要:OLAP 数据库 ClickHouse 被"试验性"接入 OLTP 主链路,一次普通发版将其引爆:CK 磁盘满且无告警导致查询 hang,Spring Boot /actuator/health 每秒 480 次心跳逐个 ping 依赖借走 CK 连接,HikariCP 连接池 10 连接被 374 线程争抢耗尽,TCP 连接数从…

2026/10/6 0:38:02 阅读更多 →

最新新闻

基于一致性算法的分布式经济调度Matlab复现与收敛性分析

基于一致性算法的分布式经济调度Matlab复现与收敛性分析

拿到这个标着“完美复现”的题目,我先说结论:这个研究方向谈不上新,但它是分布式控制与电力系统优化结合得最漂亮的一个入门案例,特别适合用来建立“分布式思维”。题目说人话就是——多台发电机组要满足一个总负荷,没…

2026/10/14 22:34:01 阅读更多 →
RT-Thread信号量本质:资源协调而非加锁

RT-Thread信号量本质:资源协调而非加锁

1. 为什么信号量不是“加锁”而是“协调”——从一个死锁现场说起刚接触 RT-Thread 时,我下意识把信号量(Semaphore)当成和互斥锁(Mutex)差不多的东西:不就是“上锁—干活—解锁”三步走?直到在…

2026/10/14 22:34:01 阅读更多 →
CoNED沿海高程数据在GEE中的淹没模拟实践与避坑指南

CoNED沿海高程数据在GEE中的淹没模拟实践与避坑指南

做沿海洪水淹没评估、海平面上升情景推演、风暴潮风险制图这类工作,第一道坎几乎都卡在高程数据上。很多新手一开始去下载普通陆地DEM,拿到沿海区域一画就露馅:陆地部分看着还行,一到滩涂、河口、潮间带,要么是空的&am…

2026/10/14 22:34:01 阅读更多 →
两台Spark实测:16GB小主机如何跑稳长上下文Agent

两台Spark实测:16GB小主机如何跑稳长上下文Agent

两台 Spark 是什么?说白了,就是我自己手头两台配置差不多的本地算力小主机,我给它们起了个代号叫 Spark,一台负责跑推理服务,一台负责干 Agent 编排和杂活。这次专门拿它们来跑本地 Agent,核心就测一件事&a…

2026/10/14 22:34:01 阅读更多 →
Certbot泛域名SSL证书自动化部署与DNS-01验证实战

Certbot泛域名SSL证书自动化部署与DNS-01验证实战

1. 为什么泛域名证书不再是“高级玩家专属”——从手动折腾到一键签发的实操跃迁你有没有过这样的经历:给公司新上线的五个子站(admin.example.com、api.example.com、docs.example.com、blog.example.com、staging.example.com)逐个申请SSL证…

2026/10/14 22:34:01 阅读更多 →
漏检后的现场重建:高可靠性系统的逆向工程能力

漏检后的现场重建:高可靠性系统的逆向工程能力

1. 项目概述:这不是故障排查,是现场重建“一次漏检之后,最难的是把现场找回来”——这句话在某高校实验室的故障复盘会上被反复提起,后来成了某跨平台系统运维组内部流传最广的一句行话。它不是形容设备坏了、日志丢了、配置错了&…

2026/10/14 22:33:00 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →