obtenerJugadoresPartida($idPartida); $primerosEnAcertar = $_SESSION['primeros_en_acertar'][$idPartida] ?? []; $jugadoresFinales = []; $equiposFinales = []; // Procesamiento de la lógica de negocio (puntos y velocidad) foreach ($listaJugadoresRaw as $jugador) { $idU = (int)$jugador['idUsuario']; $idE = (int)$jugador['idEquipo']; $respuestasUsuario = $modelo->obtenerRespuestasUsuario($idPartida, $idU); $aciertos = 0; $puntosTotalesJugador = 0; foreach ($respuestasUsuario as $resp) { if ((int)$resp['correcta'] === 1) { $aciertos++; $idPxp = $resp['idPartidaxPregunta']; // Regula si es el más rápido (+2) o normal (+1) if (isset($primerosEnAcertar[$idPxp]) && $primerosEnAcertar[$idPxp] === $idU) { $puntosTotalesJugador += 2; } else { $puntosTotalesJugador += 1; } } } $jugadoresFinales[] = [ 'nombre' => $jugador['nombreUsuario'], 'equipo' => $jugador['nombreEquipo'], 'aciertos' => $aciertos, 'puntos' => $puntosTotalesJugador ]; if (!isset($equiposFinales[$idE])) { $equiposFinales[$idE] = [ 'nombre' => $jugador['nombreEquipo'], 'puntos' => 0 ]; } $equiposFinales[$idE]['puntos'] += $puntosTotalesJugador; } // Ordenaciones de rankings usort($jugadoresFinales, function($a, $b) { return $b['puntos'] <=> $a['puntos']; }); usort($equiposFinales, function($a, $b) { return $b['puntos'] <=> $a['puntos']; }); require_once __DIR__ . '/vistas/vistaResultados.php';