リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: 合体ドロップ
ゲームオーバー後に「シェア用スコアカード」テキストをワンタップでコピーできる機能の追加
## 1. 目的
ゲームオーバー画面でスコア・最大進化アイテム・コンボ数などをSNS向けのテキスト形式にまとめ、ワンタップでクリップボードにコピーできるボタンを追加する。外部APIは不要で、既存のゲームオーバーオーバーレイに軽量なUIを追加するだけで完結する。
## 2. 具体的な仕様
### コピーされるテキストのフォーマット(日本語時)
```
【合体ドロップ】🥕 野菜モード
スコア: 12,480
最大進化: 🥦 ブロッコリー
プレイ時間: 3:42 / 進化回数: 28 / 最大コンボ: 5
#合体ドロップ #MergeDrop
https://aiapps.jp/apps/vegetable-drop/
```
英語時は英語表記(Merge Drop、モード名英語、ハッシュタグ共通)。
### ボタンのUI
- ゲームオーバーオーバーレイの「スコアを登録」フォームと既存ボタン行の間に配置
- ラベル: 「📋 結果をコピー」(EN: 「📋 Copy Result」)
- スタイル: 既存の `.btn-sub` クラスを流用し、幅は `max-width:280px` に合わせて `width:100%`
- コピー成功後ボタンテキストを一時的に「✅ コピーしました!」(EN: 「✅ Copied!」)に変え、2秒後に元に戻す
- `navigator.clipboard.writeText()` が使えない環境(旧Safariなど)では `document.execCommand('copy')` にフォールバック。それも失敗した場合はボタンテキストを「❌ コピーできませんでした」に変えてフェードアウト
### 生成ロジック(JS側)
ゲームオーバー時に既存の `finalScore`・`maxEvoName`・`maxEvoEmoji`・`summaryDuration`・`summaryMerges`・`summaryMaxCombo`・`currentMode`・`currentLang` 変数を参照してテキストを組み立てる。新たなDB変更・PHP変更は不要。
```js
function buildShareText() {
const modeName = VD_META[currentMode]?.name ?? currentMode;
const modeIcon = VD_META[currentMode]?.icon ?? '';
const scoreStr = Number(finalScore).toLocaleString();
const lang = currentLang; // 'ja' or 'en'
if (lang === 'en') {
return [
`[Merge Drop] ${modeIcon} ${modeName} Mode`,
`Score: ${scoreStr}`,
`Best Evolution: ${maxEvoEmoji} ${maxEvoName}`,
`Time: ${summaryDuration} / Merges: ${summaryMerges} / Max Combo: ${summaryMaxCombo}`,
`#MergeDrop`,
`https://aiapps.jp/apps/vegetable-drop/`
].join('\n');
}
return [
`【合体ドロップ】${modeIcon} ${modeName}モード`,
`スコア: ${scoreStr}`,
`最大進化: ${maxEvoEmoji} ${maxEvoName}`,
`プレイ時間: ${summaryDuration} / 進化回数: ${summaryMerges} / 最大コンボ: ${summaryMaxCombo}`,
`#合体ドロップ #MergeDrop`,
`https://aiapps.jp/apps/vegetable-drop/`
].join('\n');
}
```
## 3. 既存機能との整合
- DB・PHP・スコア送信・ランキングへの影響なし
- ゲームオーバーオーバーレイのHTML構造を変えず、既存ボタン行の直前にボタン1つを追加するだけ
- スコア送信前でもコピーできるが、送信とは独立した操作のため送信フローを壊さない
- スマホ・PCともに動作(クリップボードAPIはiOS15+/Android Chrome/PCで動作確認済みのフォールバック付き)
- 多言語対応済み(`currentLang` を参照)
- `t()` 辞書に `'btn_copy_result' => '📋 結果をコピー'`(ja)と `'📋 Copy Result'`(en)の2キーを追加する
ゲームオーバー画面でスコア・最大進化アイテム・コンボ数などをSNS向けのテキスト形式にまとめ、ワンタップでクリップボードにコピーできるボタンを追加する。外部APIは不要で、既存のゲームオーバーオーバーレイに軽量なUIを追加するだけで完結する。
## 2. 具体的な仕様
### コピーされるテキストのフォーマット(日本語時)
```
【合体ドロップ】🥕 野菜モード
スコア: 12,480
最大進化: 🥦 ブロッコリー
プレイ時間: 3:42 / 進化回数: 28 / 最大コンボ: 5
#合体ドロップ #MergeDrop
https://aiapps.jp/apps/vegetable-drop/
```
英語時は英語表記(Merge Drop、モード名英語、ハッシュタグ共通)。
### ボタンのUI
- ゲームオーバーオーバーレイの「スコアを登録」フォームと既存ボタン行の間に配置
- ラベル: 「📋 結果をコピー」(EN: 「📋 Copy Result」)
- スタイル: 既存の `.btn-sub` クラスを流用し、幅は `max-width:280px` に合わせて `width:100%`
- コピー成功後ボタンテキストを一時的に「✅ コピーしました!」(EN: 「✅ Copied!」)に変え、2秒後に元に戻す
- `navigator.clipboard.writeText()` が使えない環境(旧Safariなど)では `document.execCommand('copy')` にフォールバック。それも失敗した場合はボタンテキストを「❌ コピーできませんでした」に変えてフェードアウト
### 生成ロジック(JS側)
ゲームオーバー時に既存の `finalScore`・`maxEvoName`・`maxEvoEmoji`・`summaryDuration`・`summaryMerges`・`summaryMaxCombo`・`currentMode`・`currentLang` 変数を参照してテキストを組み立てる。新たなDB変更・PHP変更は不要。
```js
function buildShareText() {
const modeName = VD_META[currentMode]?.name ?? currentMode;
const modeIcon = VD_META[currentMode]?.icon ?? '';
const scoreStr = Number(finalScore).toLocaleString();
const lang = currentLang; // 'ja' or 'en'
if (lang === 'en') {
return [
`[Merge Drop] ${modeIcon} ${modeName} Mode`,
`Score: ${scoreStr}`,
`Best Evolution: ${maxEvoEmoji} ${maxEvoName}`,
`Time: ${summaryDuration} / Merges: ${summaryMerges} / Max Combo: ${summaryMaxCombo}`,
`#MergeDrop`,
`https://aiapps.jp/apps/vegetable-drop/`
].join('\n');
}
return [
`【合体ドロップ】${modeIcon} ${modeName}モード`,
`スコア: ${scoreStr}`,
`最大進化: ${maxEvoEmoji} ${maxEvoName}`,
`プレイ時間: ${summaryDuration} / 進化回数: ${summaryMerges} / 最大コンボ: ${summaryMaxCombo}`,
`#合体ドロップ #MergeDrop`,
`https://aiapps.jp/apps/vegetable-drop/`
].join('\n');
}
```
## 3. 既存機能との整合
- DB・PHP・スコア送信・ランキングへの影響なし
- ゲームオーバーオーバーレイのHTML構造を変えず、既存ボタン行の直前にボタン1つを追加するだけ
- スコア送信前でもコピーできるが、送信とは独立した操作のため送信フローを壊さない
- スマホ・PCともに動作(クリップボードAPIはiOS15+/Android Chrome/PCで動作確認済みのフォールバック付き)
- 多言語対応済み(`currentLang` を参照)
- `t()` 辞書に `'btn_copy_result' => '📋 結果をコピー'`(ja)と `'📋 Copy Result'`(en)の2キーを追加する
💬 返信 (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