import React, { useState, useEffect } from 'react'; import './ComparisonScreen.css'; const ComparisonScreen = ({ question, userAnswer, otherPlayers, currentQuestionNumber, totalQuestions, onContinue }) => { const [showConfetti, setShowConfetti] = useState(false); const [sortedPlayers, setSortedPlayers] = useState([]); useEffect(() => { // Если ответ правильный, показываем конфетти if (userAnswer.isCorrect === true) { setShowConfetti(true); setTimeout(() => setShowConfetti(false), 3000); } // Сортируем игроков по правильности ответа и времени const allPlayers = [ { name: "Вы", avatar: "👤", isCorrect: userAnswer.isCorrect, answerText: userAnswer.answerText, timeSpent: userAnswer.timeSpent, isUser: true }, ...otherPlayers ]; const sorted = allPlayers.sort((a, b) => { if (a.isCorrect === b.isCorrect) { return a.timeSpent - b.timeSpent; } return b.isCorrect ? 1 : -1; }); setSortedPlayers(sorted); }, [userAnswer, otherPlayers]); const getRankEmoji = (index) => { switch(index) { case 0: return "🥇"; case 1: return "🥈"; case 2: return "🥉"; default: return `${index + 1}️⃣`; } }; const getScoreChange = (isCorrect, timeSpent) => { if (isCorrect) { if (timeSpent < 10) return "+15 ⚡"; if (timeSpent < 20) return "+10 ✨"; return "+5 📝"; } return "0 ❌"; }; const getSpeedRating = (timeSpent) => { if (timeSpent < 10) return "Молниеносно! 🚀"; if (timeSpent < 20) return "Быстро ⚡"; if (timeSpent < 30) return "Средне 🐌"; return "Медленно 🐢"; }; return (
{showConfetti &&
🎉✨🎊
}

Результаты вопроса {currentQuestionNumber}

{question.text}

{userAnswer.isCorrect === true && "✅ Правильно!"} {userAnswer.isCorrect === false && "❌ Неправильно!"} {userAnswer.isCorrect === null && "⏳ Ожидает оценки"}
Ваш ответ: {userAnswer.answerText}
Время ответа: {userAnswer.timeSpent} сек
Скорость: {getSpeedRating(userAnswer.timeSpent)}
Очки: {getScoreChange(userAnswer.isCorrect, userAnswer.timeSpent)}

🏆 Сравнение с другими игроками

{sortedPlayers.map((player, index) => (
{getRankEmoji(index)}
{player.avatar}
{player.name} {player.isUser && (Вы)}
{player.answerText}
{player.isCorrect ? "✓" : "✗"}
{player.timeSpent}с
))}

📊 Статистика вопроса

{Math.round((sortedPlayers.filter(p => p.isCorrect).length / sortedPlayers.length) * 100)}%
игроков ответили правильно
{Math.min(...sortedPlayers.map(p => p.timeSpent))}с
самый быстрый ответ
{Math.round(sortedPlayers.reduce((sum, p) => sum + p.timeSpent, 0) / sortedPlayers.length)}с
среднее время ответа
); }; export default ComparisonScreen;