上传文件至「/」

This commit is contained in:
guzhujushi committed 2026-08-27 22:54:14 +08:00
commit 790f8099a6
5 files changed
+7553

No files matched your search

+33
View File
@@ -0,0 +1,33 @@
# ARCH — 合成交大(Integrate SJTU)
## 技术选型
- 单 HTML 文件 + Canvas 2D 渲染。
- Matter.js 0.19.0(CDN:https://cdnjs.cloudflare.com/ajax/libs/matter-js/0.19.0/matter.min.js)。
- 原生 JavaScript,无构建步骤;PowerShell 以 UTF-8 写出。
## 模块划分
- SVG_STRINGS / BADGE_CACHE:9 个校徽 SVG 内联字符串、data URI 加载与离屏 Canvas 缓存。
- LEVELS / WEIGHTS:9 级半径/颜色/校名数据与解锁权重表。
- 物理层:createWorld(引擎+三面墙)、createBall、isMergeable、doMerge、wakeNearbyBalls。
- 玩法层:pickLevel(权重随机)、dropBall(冷却)、combo/计分、游戏结束判定。
- 渲染层:HUD、虚线红线、预告球与预测落点、球体、粒子/光环/浮动文字/撒花。
- 输入层:pointerdown/move/up 控制瞄准与投掷,坐标按画布缩放映射。
## 数据流
- 页面加载 → preloadBadges 异步加载 9 张校徽入缓存 → 用户 pointer 移动预告球 → 松手投掷入物理世界 → Matter 60Hz 固定步长推进 → collisionStart 收集同等级接触对 → pendingMerges(60ms 延迟)→ doMerge(冻结旧球、移除、加权中心创建新球)→ 计分/解锁/特效/唤醒附近球 → 渲染循环。
## 目录结构
- D:\integrate_sjtu\index.html(游戏本体)
- D:\integrate_sjtu\PRD.md / ARCH.md / STATUS.md(三文件文档)
- D:\integrate_sjtu\assets\1_西交.svg … 9_上交.svg(校徽资源,只读引用)
## 接口设计
- drawBadge(ctx, level, x, y, r):缓存优先绘制校徽,兜底为特征色圆+白色缩写。
- wakeNearbyBalls(cx, cy, radius):对距离 < radius 的球先置 sleepThreshold=0 再恢复 60(并强制唤醒)。
- pickLevel():按当前 maxUnlocked 对应权重表随机取 1..N 级。
- isMergeable(a, b):同等级、均为游戏球、未移除、非静态、距离 ≤ 半径和+10px。
- doMerge(a, b):校验后冻结并移除旧球,在加权中心创建新等级球。
- createWorld():重建引擎与左右墙/底部(摩擦 0.08/0.08/0.3,restitution 0)。
## 部署方案
- 静态文件直接部署或本地打开;Matter.js 依赖 CDN,需联网加载。