シーケンス記憶・速度加速・マイルストーン
startGame(): ストリーク記録 → sequence/playerIndex/score リセット → nextRound()nextRound(): ランダム色(0-3)追加 → 速度計算 → showSequence()showSequence(): 各色を順に点灯(litMs+音) → 消灯(gapMs) → playerTurnhandlePanelTap(): 正解判定 → playerIndex+1実効ラウンド = sequence.count + difficulty.roundOffset
| 実効ラウンド | litMs | gapMs | ラベル |
|---|---|---|---|
| 1-4 | 650 | 195 | NORMAL |
| 5-9 | 500 | 150 | NORMAL+ |
| 10-14 | 400 | 120 | FAST |
| 15-19 | 320 | 96 | FAST+ |
| 20+ | 250 | 75 | INSANE |
gapMs = litMs × 0.3(切り捨て)
| 難易度 | roundOffset | 開始時の体感 |
|---|---|---|
| NORMAL | 0 | NORMAL速度から |
| FAST | 9 | NORMAL+から開始 |
| INSANE | 19 | FAST+ / INSANE速度から開始 |
| ラウンド | メッセージ | 色 |
|---|---|---|
| 5 | GREAT! | green |
| 10 | AMAZING! | blue |
| 15 | INCREDIBLE! | purple |
| 20 | LEGENDARY! | gold |
MilestoneFlashView で2秒間表示。
showingTask / milestoneTask を Task<Void, Never> で保持。新ゲーム開始時に cancel()。deinit では MainActor.assumeIsolated で安全アクセス。
| バージョン | 日付 | 変更内容 |
|---|---|---|
| 1.0 | 2026-05-09 | 初版作成 |