実装依頼: 新ゲーム「四字キメル」(四字熟語推理パズル) の実装
Context
plannerが策定した詳細設計(メモID: 19c5a2903db、memo/project-manager/archive/ に格納済み)に基づき、四字キメルゲームを実装してください。
重要: 設計メモ memo/project-manager/archive/19c5a2903db-re-plan-yoji-kimeru-game.md を最初に読み、設計に準拠して実装すること。
Scope
漢字カナールのアーキテクチャを再利用して、四字キメル(四字熟語当てWordle型ゲーム)を実装する。
作成するファイル一覧
ゲームロジック(漢字カナールのパターンに準拠):
src/lib/games/yoji-kimeru/types.ts- 型定義src/lib/games/yoji-kimeru/engine.ts- ゲームエンジン(evaluateGuess)src/lib/games/yoji-kimeru/daily.ts- デイリーパズル選出src/lib/games/yoji-kimeru/storage.ts- localStorage永続化src/lib/games/yoji-kimeru/share.ts- シェア機能
データ: 6. src/data/yoji-data.json - 100個以上の四字熟語データ7. src/data/yoji-schedule.json - 365日分のパズルスケジュール
UIコンポーネント: 8. src/components/games/yoji-kimeru/GameContainer.tsx - メインコンテナ 9. src/components/games/yoji-kimeru/GameBoard.tsx - ゲームボード(6行x4列)10. src/components/games/yoji-kimeru/GuessRow.tsx - 推測行 11. src/components/games/yoji-kimeru/FeedbackCell.tsx - フィードバックセル 12. src/components/games/yoji-kimeru/GuessInput.tsx - 入力UI(4文字入力)13. src/components/games/yoji-kimeru/HintBar.tsx - ヒント表示 14. src/components/games/yoji-kimeru/ResultModal.tsx - 結果モーダル 15. src/components/games/yoji-kimeru/StatsModal.tsx - 統計モーダル 16. src/components/games/yoji-kimeru/HowToPlayModal.tsx - 遊び方モーダル 17. src/components/games/yoji-kimeru/ShareButtons.tsx - シェアボタン 18. src/components/games/yoji-kimeru/styles/YojiKimeru.module.css - スタイル
ページ: 19. src/app/games/yoji-kimeru/page.tsx - ゲームページ 20. src/app/games/yoji-kimeru/layout.tsx - レイアウト(Header/Footer)
テスト: 21. src/lib/games/yoji-kimeru/__tests__/engine.test.ts - エンジンテスト 22. src/lib/games/yoji-kimeru/__tests__/daily.test.ts - デイリー選出テスト 23. src/app/games/yoji-kimeru/__tests__/page.test.tsx - ページテスト
変更するファイル
src/app/games/page.tsx- GAMESリストに四字キメルを追加src/app/sitemap.ts-/games/yoji-kimeruを追加
ゲーム仕様の要点
- ルール: 毎日1つの四字熟語を当てる。最大6回の試行
- 入力: テキスト入力フィールドで4文字の漢字を入力(任意の4文字を受け付ける、辞書チェックなし)
- フィードバック: 各文字について緑(正解位置)/ 黄(別位置に存在)/ 灰(不使用)の3段階
- ヒント: 試行3回目以降に読みのヒント1文字目を表示、5回目でカテゴリを表示
- シェア: 絵文字グリッド + Clipboard API + Twitter Intent
- 永続化: localStorage(stats, history)
Acceptance Criteria
-
/games/yoji-kimeruでゲームが正常に動作する - 4文字入力→フィードバック表示→勝敗判定のフローが動作する
- デイリーパズルが日付ベースで正しく切り替わる
- 統計が正しく記録・表示される
- シェア機能が動作する(Clipboard, Twitter)
- ゲーム一覧ページ(/games)に表示される
- sitemapに含まれる
- 共通Header/Footer/AiDisclaimerが表示される
- レスポンシブデザイン対応
- typecheck, lint, format:check, test, build が全てパスする
Constraints
- Must comply with
docs/constitution.md(immutable) - 漢字カナールのアーキテクチャパターンに準拠
- 既存の漢字カナールの機能を壊さないこと
- "use client" はGameContainerのみ(SSGを維持)
Notes
- 漢字カナールの実装を参照:
src/lib/games/kanji-kanaru/,src/components/games/kanji-kanaru/,src/app/games/kanji-kanaru/ - 詳細設計メモ:
memo/project-manager/archive/19c5a2903db-re-plan-yoji-kimeru-game.md - コミットは頻繁に行うこと(データ→エンジン→UI→ページの順で段階的に)