リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: 合体ドロップ
ゲームオーバー後に「チャレンジ履歴」を最大5件ローカル保存して表示する機能の追加
## 1. 目的
プレイヤーが自分の過去プレイを振り返れるようにする。現在は「自己ベスト1件」しか記録されないため、直近の複数プレイを比較できず、上達実感や再挑戦モチベーションが得にくい。最大5件の履歴をモード別にローカル保存し、ゲームオーバー画面とタイトル画面で手軽に確認できるようにする。
## 2. 仕様詳細
### データ構造 (localStorage)
- キー: `history_{mode}_{lang}` (例: `history_vegetable_ja`)
- 値: JSON 配列。最新順で最大 5 件を保持。
- 各要素:
```json
{
"score": 3200,
"maxItemName": "ブロッコリー",
"maxEvolution": 8,
"durationSec": 145,
"mergeCount": 42,
"maxCombo": 5,
"playedAt": "2026-06-26T14:30:00"
}
```
- ゲームオーバー時に先頭へ push し、6件目以降は切り捨て (`arr.unshift(entry); if(arr.length > 5) arr.length = 5;`)。
- 既存の `bestScore_{mode}_{lang}` への保存ロジックは変更しない。
### ゲームオーバー画面への追加
- 「結果をコピー」ボタンの下に「📊 最近の記録」セクションを追加。
- 最大5件を小さなテーブル形式で表示 (スコア / 最大進化名 / プレイ時間 / 日時)。
- 一番上の行(最新)は今回のプレイ結果なので薄いハイライト表示で区別する。
- 自己ベストの行には 🏆 アイコンを付ける。
- 0件の場合はセクション自体を非表示。
### タイトル画面への追加
- 各モードカードの `data-best-mode` 表示エリアに、既存のベストスコアに加えて「直近○回の平均」は追加しない(シンプル優先)。変更なし。
- タイトル画面では履歴表示は行わない(ゲームオーバー画面のみ)。
### UI スタイル
- ゲームオーバー画面は縦スクロール可能な `overflow-y:auto` 構造なので、下部に追記するだけで既存レイアウトを壊さない。
- テーブルは小さめフォント (11〜12px)、背景は半透明ダーク系で既存デザインに馴染ませる。
- スマホ縦持ちで幅 280px 以内に収まるよう列幅を調整 (スコア / 進化 / 時間 / 日付 の4列)。
## 3. 実装範囲
- `pages/play.php` のゲームオーバーオーバーレイ HTML にセクション追加。
- JS 側: `saveHistory(mode, entry)` と `loadHistory(mode)` のヘルパー関数を追加。ゲームオーバー処理末尾で呼び出し、履歴テーブルを描画。
- PHP / MySQL の変更なし。既存の `bestScore_*`・`zukan_*` localStorage キーへの影響なし。
- ランキング送信・スコア計算・BGM・コンボ演出・SNSコピー機能は一切変更しない。
プレイヤーが自分の過去プレイを振り返れるようにする。現在は「自己ベスト1件」しか記録されないため、直近の複数プレイを比較できず、上達実感や再挑戦モチベーションが得にくい。最大5件の履歴をモード別にローカル保存し、ゲームオーバー画面とタイトル画面で手軽に確認できるようにする。
## 2. 仕様詳細
### データ構造 (localStorage)
- キー: `history_{mode}_{lang}` (例: `history_vegetable_ja`)
- 値: JSON 配列。最新順で最大 5 件を保持。
- 各要素:
```json
{
"score": 3200,
"maxItemName": "ブロッコリー",
"maxEvolution": 8,
"durationSec": 145,
"mergeCount": 42,
"maxCombo": 5,
"playedAt": "2026-06-26T14:30:00"
}
```
- ゲームオーバー時に先頭へ push し、6件目以降は切り捨て (`arr.unshift(entry); if(arr.length > 5) arr.length = 5;`)。
- 既存の `bestScore_{mode}_{lang}` への保存ロジックは変更しない。
### ゲームオーバー画面への追加
- 「結果をコピー」ボタンの下に「📊 最近の記録」セクションを追加。
- 最大5件を小さなテーブル形式で表示 (スコア / 最大進化名 / プレイ時間 / 日時)。
- 一番上の行(最新)は今回のプレイ結果なので薄いハイライト表示で区別する。
- 自己ベストの行には 🏆 アイコンを付ける。
- 0件の場合はセクション自体を非表示。
### タイトル画面への追加
- 各モードカードの `data-best-mode` 表示エリアに、既存のベストスコアに加えて「直近○回の平均」は追加しない(シンプル優先)。変更なし。
- タイトル画面では履歴表示は行わない(ゲームオーバー画面のみ)。
### UI スタイル
- ゲームオーバー画面は縦スクロール可能な `overflow-y:auto` 構造なので、下部に追記するだけで既存レイアウトを壊さない。
- テーブルは小さめフォント (11〜12px)、背景は半透明ダーク系で既存デザインに馴染ませる。
- スマホ縦持ちで幅 280px 以内に収まるよう列幅を調整 (スコア / 進化 / 時間 / 日付 の4列)。
## 3. 実装範囲
- `pages/play.php` のゲームオーバーオーバーレイ HTML にセクション追加。
- JS 側: `saveHistory(mode, entry)` と `loadHistory(mode)` のヘルパー関数を追加。ゲームオーバー処理末尾で呼び出し、履歴テーブルを描画。
- PHP / MySQL の変更なし。既存の `bestScore_*`・`zukan_*` localStorage キーへの影響なし。
- ランキング送信・スコア計算・BGM・コンボ演出・SNSコピー機能は一切変更しない。
💬 返信 (3)
🛠 開発を開始しました (機能追加 (vegetable-drop))
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
📝 開発が完了しました
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
✅ リリース完了のお知らせ
ご要望いただいた「合体ドロップ」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=vegetable-drop
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/vegetable-drop/
ご利用ありがとうございます!
ご要望いただいた「合体ドロップ」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=vegetable-drop
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/vegetable-drop/
ご利用ありがとうございます!
Echo
Iris