import React, { useState, useEffect, useCallback } from 'react'; const MouseHunterGame = () => { const [target, setTarget] = useState({ x: 0, y: 0 }); const [score, setScore] = useState(0); const [tries, setTries] = useState(0); const [startTime, setStartTime] = useState(null); const [gameOver, setGameOver] = useState(false); const generateTarget = useCallback(() => { const x = Math.floor(Math.random() * (window.innerWidth - 50)); const y = Math.floor(Math.random() * (window.innerHeight - 50)); setTarget({ x, y });setStartTime(Date.now()); }, []); useEffect(() => { generateTarget(); }, [generateTarget]); const handleClick = (e) => { if (gameOver) return; const clickX = e.clientX; const clickY = e.clientY; const distance = Math.sqrt( Math.pow(clickX - target.x, 2) + Math.pow(clickY - target.y, 2) ); if (distance < 25) { const timeTaken = (Date.now() - startTime) / 1000; const pointsEarned = Math.max(10 - Math.floor(timeTaken), 1); setScore(prevScore => prevScore + pointsEarned); setTries(prevTries => prevTries + 1); if (tries === 4) { setGameOver(true); } else { generateTarget(); } } }; const getGrade = () => { if (score >= 45) return 'A'; if (score >= 35) return 'B'; if (score >= 25) return 'C'; if (score >= 15) return 'D'; return 'F'; }; const resetGame = () => { setScore(0); setTries(0); setGameOver(false); generateTarget(); }; return (
Final Score: {score}
Grade: {getGrade()}