# Design · Piano Tap 4

## 视口 480×720

## 核心循环

```
菜单 → 选曲 → playing
playing:
  spawn loop（按 chart spawn tile） → tile 下落 → 玩家 tap → 判定 perfect/good/miss
  → +20/+10/fail
  → combo +1 或 fail
  → 全曲通关 OR miss → gameover
gameover → retry / 回菜单
```

## 数据结构

```javascript
SONGS: [{ name, bpm, speed(px/s), length(ms) }]
S.tiles: [{ lane, hit_t, el, hit }]
S.spawnQueue: [{ lane, t }]
```

## 难度递增（5 曲）

| # | 名 | BPM | speed | length |
|---|---|---:|---:|---:|
| 1 | 卡农 慢板 | 90 | 200 | 30s |
| 2 | 欢乐颂 | 110 | 230 | 30s |
| 3 | 土耳其进行曲 | 130 | 260 | 30s |
| 4 | 野蜂飞舞 | 150 | 300 | 30s |
| 5 | 狂热档 | 180 | 340 | 30s |

## Juice 4

- J1 弹分浮字（+20 蓝 / +10 黄 / miss 红震）
- J2 tile 命中 scale 1→1.15→.6 缩放
- J5 屏幕底部判定线闪光 + miss 时全屏红震
- J7 全曲通关解锁下一曲

## 难度 3 问

- Q1 玩家在第 1 秒知道要干嘛？✓（菜单 1 句话教学 + 第 1 tile 1.2s 出）
- Q2 第 3 秒能否反馈"对了"？✓（第 1 tap 即 +20 弹字 + 缩放）
- Q3 第 30s 能否决定再玩？✓（gameover 直接 retry + 解锁下曲）
