export default function KanjiLearningGame() { const levels = { 1: [ { kanji: '山', yomikata: 'やま', enemy: 'スライム' }, { kanji: '川', yomikata: 'かわ', enemy: 'コウモリ' }, { kanji: '空', yomikata: 'そら', enemy: 'ミニドラゴン' } ], 2: [ { kanji: '海', yomikata: 'うみ', enemy: '海のまおう' }, { kanji: '星', yomikata: 'ほし', enemy: 'スターゴーレム' }, { kanji: '雪', yomikata: 'ゆき', enemy: 'アイスモンスター' } ], 3: [ { kanji: '議', yomikata: 'ぎ', enemy: 'かんじキング' }, { kanji: '戦', yomikata: 'せん', enemy: 'ダークナイト' }, { kanji: '勇', yomikata: 'ゆう', enemy: 'ラスボスドラゴン' } ] }; const [screen, setScreen] = React.useState('title'); const [level, setLevel] = React.useState(1); const [questionIndex, setQuestionIndex] = React.useState(0); const [answer, setAnswer] = React.useState(''); const [message, setMessage] = React.useState(''); const [hp, setHp] = React.useState(5); const [exp, setExp] = React.useState(0); const [cleared, setCleared] = React.useState([]); const currentQuestion = levels[level][questionIndex]; const startGame = (selectedLevel) => { setLevel(selectedLevel); setQuestionIndex(0); setAnswer(''); setMessage(''); setHp(5); setScreen('game'); }; const checkAnswer = () => { if (answer.trim() === currentQuestion.yomikata) { setMessage('⚔️ こうげき成功!'); setExp(exp + 10); if (questionIndex + 1 < levels[level].length) { setTimeout(() => { setQuestionIndex(questionIndex + 1); setAnswer(''); setMessage(''); }, 1200); } else { if (!cleared.includes(level)) { setCleared([...cleared, level]); } setTimeout(() => { setScreen('clear'); }, 1200); } } else { setHp(hp - 1); setMessage('💥 ダメージをうけた!'); if (hp - 1 <= 0) { setTimeout(() => { setScreen('gameover'); }, 1200); } } }; if (screen === 'title') { return (

🏰 漢字クエスト

漢字を読んでモンスターをたおそう!

🏆 クリアしたレベル

{cleared.length === 0 ? (

まだありません

) : (
    {cleared.map((lv) => (
  • レベル {lv}
  • ))}
)}
); } if (screen === 'clear') { return (

🎉 レベルクリア!

EXP +30!

現在のEXP:{exp}

); } if (screen === 'gameover') { return (

☠️ ゲームオーバー

); } return (
❤️ HP: {hp}
⭐ EXP: {exp}

👾 {currentQuestion.enemy} が あらわれた!

この漢字を読め!

{currentQuestion.kanji}
setAnswer(e.target.value)} placeholder="ひらがなで入力" className="w-full border-2 border-purple-300 rounded-2xl p-4 text-2xl text-center mb-4" />
{message}
); }