
鼠标横移底部 paddle,把球反弹回去打掉每关砖块网格。3 球用完 = Game Over。
双击 build/index.html → 鼠标移动控制挡板 → 点击 / 空格发球。
| 输入 | 行为 |
|---|---|
| 鼠标移动 | paddle 跟手 X 轴移动 |
| 触屏 touchmove | 同上(移动端) |
| 鼠标点击 / SPACE / ENTER | 发球(仅球粘住时生效) |
| ←/→ 方向键 | 备用键盘控制(每按 28px) |
| 类型 | 标记 | HP | 分值 | 特性 |
|---|---|---|---|---|
| 普通 | 蓝/青/绿渐变 | 1 | 50 | 一击即碎 |
| 硬砖 | 紫色 + 数字 | 2 | 90 | 两击破,第一击变浅色 |
| 爆炸砖 | 橙红 + ✸ | 1 | 130 | 击碎触发 3×3 周围爆炸(每砖额外 40) |
| 道具 | 颜色 | 效果 |
|---|---|---|
| B Big Paddle | 青色 | 挡板宽度 100→168,持续 10s |
| M Multi Ball | 黄色 | 立即生成 2 个额外球(场上最多 6 球) |
BALL_SPEED_BASE / BALL_SPEED_MAX / BALL_SPEED_PER_STAGEPADDLE_WIDTH_BASE / PADDLE_WIDTH_BIGBRICK_ROWS_BASE / BRICK_ROWS_PER_STAGE / BRICK_COLSHARD_CHANCE_BASE / BOMB_CHANCE_BASE(每关 +0.04 / +0.02)POWERUP_DROP_CHANCE(默认 18%)BIG_PADDLE_DURATION_MS / MULTI_EXTRA_BALLS / MAX_BALLSLIVES_BASE(默认 3)localStorage.brickPaddle.bestCaromble!(2026-04-22):打砖 + 物理Kabonk!(2025-10-10,100% 好评):霓虹 + powerupBrickochet(96% 好评):精确反弹Breakout: Recharged(81% 好评):经典现代化src/index.html / build/index.html:单文件原型(约 736 行,含 HTML/CSS/JS)DESIGN.md:设计说明PLAYTEST_REPORT.md / ACCEPTANCE_REPORT.md:自测 + 验收EXPANSION_PLAN.md / EXPANSION_HANDOFF.md:扩展方向CHINA_MOBILE_COMMERCIALIZATION_PLAN.md:商业化(GO 状态触发)CHANGELOG.md / DAILY_REPORT.md第一个 30 秒:玩家看到底部蓝挡板 + 顶部砖块网格 → 鼠标动一下发现挡板跟手 → 点一下球飞出去 → 球碰砖块爆裂 → "啊原来如此"。Breakout 经典心智模型,零学习成本。
正反馈来源:每一击都有 4 重反馈(粒子 + 飘字 + 音效 + 屏抖),命中爆炸砖时全屏橙闪 + 链式爆开,是单局最强爽点。
第二局动机:
最强爽点:连续打掉爆炸砖 → 3×3 范围连锁 → 一砖换 8+ 块 → 屏幕全是粒子和闪光。
最弱断点:
待验证:
已验证(代码层):
玩家通过 [鼠标横移挡板 + 命中点决定反弹角度],
不断获得 [一击多消的连锁爆裂 + 爆炸砖 3×3 范围爆开 + 多球开花 + 大挡安全感],
为了 [清掉每关砖块网格 + 挑战最高 STAGE + 破上次纪录],
逐步形成 [挡板瞄准的策略感 + 优先打爆炸砖的取舍 + 关卡递增的紧张感]。让一个不知情玩家在 5 分钟内完成 stage 1-3 通关,并在 10 分钟内打开第 2 局尝试破纪录。
请基于 E:\project513\prototypes\2026-05-13-10-brick-paddle\ 执行扩展验证 v2。
本次只验证 [反弹角度三档对比 + 连击系统 + 难度选择]。
不要加商业化。
完成后输出新版原型、对比报告和最终推荐配置(反弹角 / 连击倍率公式 / 难度档位差异系数)。鼠标横移挡板把球反弹回去清掉砖块网格 —— 经典 Breakout 的现代手感版。
513 全 9 轮的 input 都是"直接控制"——点击触发、拖拽轨迹、追随、hold、连按、按钮。10 轮首次引入「玩家控制挡板 → 挡板影响球 → 球影响砖」这条间接因果链。这是物理类游戏的核心吸引力。
公式:
rel = clamp((ball.x - paddle.center) / (paddle.w / 2), -1, 1)
angle = rel × 72° // max 72° 偏移,避免水平推飞
ball.vx = sin(angle) × speed
ball.vy = -cos(angle) × speed // 保证向上
更多种类会冲淡每个的辨识度。
513 全 9 轮失败方式:HP 归零(无)、时间结算、ERROR 次数、撞 3 次、漏 5 次、字符越界、步数耗尽、连击超时。10 轮首次"单次位置事件触发 = 即时损失生命"——不是计数,不是状态值耗尽,是几何意义上的"出界"。
3-5 关每关 1-3 分钟,玩家可在 5-10 分钟内体验从 5 行到 9 行的难度递增;"STAGE CLEAR" 弹幕给即时正反馈,比无尽刷分更有节奏。
看到底部挡板 + 顶部砖块 → 鼠标动一下 → "啊原来挡板跟手" → 点一下 → "啊球飞出去了" → 球弹到砖 → "啊砖碎了" → 全懂。
| Stage | 砖块行数 | 球速 | 硬砖率 | 爆炸率 | 通关奖励 |
|---|---|---|---|---|---|
| 1 | 5 | 5.4 | 18% | 8% | 200 |
| 2 | 6 | 5.75 | 22% | 10% | 400 |
| 3 | 7 | 6.1 | 26% | 12% | 600 |
| 4 | 8 | 6.45 | 30% | 14% | 800 |
| 5+ | 9 (max) | 6.8+ | 34%+ | 16%+ | 1000+ |
球速上限 8.5 px/帧,避免 5 关后球速爆炸。
| 行为 | 分数 |
|---|---|
| 普通砖 | 50 |
| 硬砖(一次破碎) | 90 |
| 爆炸砖(中心) | 130 |
| 爆炸链式砖 | 40 / 个 |
| 通关奖励 | stage × 200 |
满屏 5 关清光理论上限:~12000-15000 分。
| 元素 | 实现 |
|---|---|
| 背景 | 径向渐变(中央 #101238 → 边缘 #06081a) |
| 星空 | 70 颗向下飘 |
| 砖块 | 圆角 + 顶部高光 + 底部阴影线性渐变 |
| 球 | 径向渐变(白 → 黄 → 橙)+ shadowBlur |
| 挡板 | 蓝/青渐变 + 顶部高光 + 边缘发光 |
| 道具 | 旋转浮动方块 + 字母标识 |
| 粒子 | 14 颗砖色粒 + 重力 |
| 飘字 | +N 黄色 |
| 屏幕震动 | shake 变量 |
| 闪屏 | 失败红 / 通关青 / 爆炸橙 |
| Stage banner | 大字青色 + 副标题 |
所有视觉用 Canvas 实时绘制,无外部图片资源。
WebAudio 合成:
build/index.htmlnew Function(scriptBody) 不报错)<!DOCTYPE html> 到结束 </html>)initGame() 重置一切 → startStage() 进 stage 1launchAllStuck() 触发 launchBall() → 球以斜向上速度飞mousemove → movePaddleTo() → paddle.x 跟手(夹紧到 [0, W-paddle.w])reflectFromPaddle() 计算反弹角度 → 强制 vy<0hitBrick() → hp-- → 0 时 alive=false → 粒子 + 飘字 + 加分triggerExplosion() → 3×3 周围砖直接 alive=false + 闪屏 + 屏抖applyPowerup() 触发大挡 / 多球stageCleared() → 闪屏 + banner + 通关奖励 → 1.7s 后 stage++ + startStage() 重建loseLife() → lives-- → > 0 重置粘球;= 0 gameOver()gameOver() → state='gameover' + localStorage 写最高分 + Result 弹窗restart() → state='playing' + initGame()| 风险 | 实现 | 状态 |
|---|---|---|
| 球粘 paddle | 反弹后 b.y = paddle.y - b.r - 1 | ✅ |
| 球穿砖 | overlap-based reflection 取最小 axis | ✅ |
| 球贴墙抖动 | b.x = b.r 等夹紧 + 反转分量 | ✅ |
| 爆炸链式死循环 | 不递归(受影响砖直接 alive=false) | ✅ |
| 多球无上限崩帧 | MAX_BALLS = 6 上限检查 | ✅ |
| paddle 出界 | Math.max(0, Math.min(W-paddle.w, x)) | ✅ |
| 触屏 paddle 滚屏 | touchmove { passive: false } + preventDefault | ✅ |
| Space 滚动页面 | e.preventDefault() | ✅ |
| RESTART 按钮触发全局 mousedown | if (e.target.tagName === 'BUTTON') return | ✅ |
| 失焦后回来跳帧 | dt = Math.min(0.05, ...) 上限 | ✅ |
| localStorage 不可用 | try/catch 包裹 | ✅ |
| AudioContext autoplay 限制 | 首次 click/key/touch 调用 initAudio() | ✅ |
| 反馈 | 实现 |
|---|---|
| 球反弹 | 音调随命中点角度变化(square) |
| 砖块碎 | 14 颗砖色粒 + +N 黄飘字 + 砖色音(按 row 高低) |
| 硬砖第一击 | 闷响 + 4 颗白粒(hint 仍未碎) |
| 爆炸砖 | 全屏橙闪 + 屏抖 14 + sawtooth 140Hz |
| 道具拾取 | Toast 提示 + triangle 音(大挡低、多球高) |
| 大挡到期 | 挡板自动缩回基础宽(保持中心) |
| 通关 | 青闪屏 + Stage Banner + 通关奖励飘 + 双音 |
| 失血 | 红闪屏 + 屏抖 14 + Toast 提示剩余 |
| Game Over | Result 弹窗 + sawtooth 失败音 |
| 进入新关 | Stage Banner "STAGE N" + 副标题砖数 |
| 维度 | 推演结果 |
|---|---|
| Stage 1 → 5 球速 | 5.4 → 6.8(线性,可控) |
| Stage 5 砖数 | 9 行 × 8 列 = 72 块(约 90 秒清完) |
| 失败前位移 | 5 分钟内可玩 1-2 局,3 球用尽 |
| Powerup 节奏 | 平均每 5-6 块出 1 个,每关 8-12 次 |
| 爆炸砖触发 | 每关期望 5-8 次(含 3-7 块连锁) |
| 通关奖励占比 | stage × 200 / 总分 ≈ 8-12%(不主导,仅情绪奖励) |
| 指标 | 分数 | 依据 |
|---|---|---|
| 30 秒可理解 | 9 | 经典 Breakout 心智模型,零教程即懂 |
| 操作反馈 | 9 | 鼠标跟手 + 7 种音效 + 粒子 + 飘字 + 屏抖 + 闪屏 |
| 核心循环 | 9 | 控-反-碎-清 紧凑闭环 |
| 复玩动力 | 8 | STAGE REACHED + BEST + powerup 运气性 + 关卡随机 |
| 爽感 | 9 | 一击多消 + 爆炸链式 + 多球开花 + powerup 爆点 |
| 策略空间 | 8 | 命中点决定反弹角 + powerup 抢点 + 优先打硬砖/爆炸砖 |
| 开发完成度 | 8 | 664 行、JS 解析通过、无阻塞 bug |
| 商业扩展潜力 | 9 | powerup / 砖类 / 关卡包 / 皮肤 / 战令 / BOSS 关全可扩 |
8 维平均:8.625
| 维度 | 分 | 说明 |
|---|---|---|
| 可玩性 (30) | 26 | (9+9+9+8+9+8)/60 × 30 |
| 好评 (25) | 23 | 品类高好评 + 爆点强 |
| 核心循环 (20) | 18 | 9/10 × 20 |
| 开发可控 (15) | 13 | 单文件、无依赖、无 AI |
| 新鲜感 (10) | 8 | 经典品类,新鲜度低于纯创新 |
候选矩阵总分:88 / 100
| 条件 | 阈值 | 实际 | 通过 |
|---|---|---|---|
| 综合评分 | ≥ 8 | 8.625 | ✅ |
| 30 秒可理解 | ≥ 8 | 9 | ✅ |
| 核心循环 | ≥ 8 | 9 | ✅ |
| 复玩动力 | ≥ 7 | 8 | ✅ |
| 开发完成度 | ≥ 7 | 8 | ✅ |
| 无阻塞 bug | 是 | 是 | ✅ |
结论:GO
| 条件 | 实际 | 通过 |
|---|---|---|
| 达到好玩门槛 | 是 | ✅ |
| 商业扩展潜力 ≥ 7 | 9 | ✅ |
| 至少 1 商业化爽点 | 5+(powerup / 砖类 / 关卡包 / 皮肤 / 战令) | ✅ |
触发自动生成 EXPANSION + COMMERCIALIZATION
俄罗斯方块 lite · 7 种方块下落 · 消行得分 · 顶到顶 = GG
点击地图节点放置塔 · 自动攻击 · 10 波敌人 · 守住基地
鼠标瞄准 + 单击发射 + 3+ 同色相邻 = 消除 + 浮动消失 + 通关或泡泡触底
拖拽画几条斜板 → 按 GO → 看小球被重力 + 反射推进,落入篮筐 = 过关。
鼠标瞄准 + 单击释放 + 同级球碰撞自动合成升级 + 容器顶部红线 = Game Over
—