diff --git a/controladores/controladorJuego.php b/controladores/controladorJuego.php index 239ba1e..085f9b5 100644 --- a/controladores/controladorJuego.php +++ b/controladores/controladorJuego.php @@ -1,79 +1,118 @@ 'Debes iniciar sesión para jugar.']); + echo json_encode([ + 'error' => 'Debes iniciar sesión para jugar.' + ]); + exit; } -$idUsuario = (int)$_SESSION['idUsuario']; -$idPartida = intval($_POST['idPartida'] ?? 0); +$idUsuario = (int) $_SESSION['idUsuario']; + +// Comprobamos que se haya indicado la partida + +if (!isset($_POST['idPartida'])) { + echo json_encode([ + 'error' => 'No se ha indicado la partida.' + ]); + + exit; +} + +$idPartida = intval($_POST['idPartida']); if ($idPartida <= 0) { - echo json_encode(['error' => 'No se ha indicado la partida.']); + echo json_encode([ + 'error' => 'La partida indicada no es válida.' + ]); + exit; } -// Solo pueden jugar los usuarios que están en uno de los equipos de la partida -$perteneceAPartida = Juego::usuarioEnPartida($idPartida, $idUsuario); +// Comprobamos que el usuario pertenezca a la partida + +$perteneceAPartida = Juego::usuarioEnPartida($idPartida,$idUsuario); if (is_array($perteneceAPartida)) { echo json_encode($perteneceAPartida); + exit; } + if (!$perteneceAPartida) { - echo json_encode(['error' => 'No formas parte de esta partida.']); + echo json_encode([ + 'error' => 'No formas parte de esta partida.' + ]); + exit; } +// Comprobamos la orden -switch ($_POST['orden'] ?? '') { +$orden = $_POST['orden'] ?? ''; + +switch ($orden) { + + // CARGAR LAS PREGUNTAS DE LA PARTIDA - // Devuelve las 10 preguntas con sus respuestas (sin marcar la correcta) case 'cargarPreguntas': - echo json_encode(Juego::cargarPreguntas($idPartida, $idUsuario)); + $resultado = Juego::cargarPreguntas($idPartida, $idUsuario); + echo json_encode($resultado); - break; + break; + // REGISTRAR RESPUESTA - // Guarda la respuesta del usuario y dice si ha acertado case 'responder': - $idPartidaxPregunta = intval($_POST['idPartidaxPregunta'] ?? 0); - $idRespuesta = intval($_POST['idRespuesta'] ?? 0); - - if ($idPartidaxPregunta <= 0 || $idRespuesta <= 0) { - echo json_encode(['error' => 'Faltan datos para registrar la respuesta.']); - break; - } - - echo json_encode( - Juego::registrarRespuesta( - $idPartida, - $idUsuario, - $idPartidaxPregunta, - $idRespuesta - ) - ); + if (!isset($_POST['idPartidaxPregunta']) || !isset($_POST['idRespuesta'])){ + echo json_encode([ + 'error' => 'Faltan datos para registrar la respuesta.' + ]); break; + } + $idPartidaxPregunta = intval($_POST['idPartidaxPregunta']); + + $idRespuesta = intval($_POST['idRespuesta']); + + if ($idPartidaxPregunta <= 0 || $idRespuesta <= 0){ + + echo json_encode([ + 'error' => 'Los datos de la respuesta no son válidos.' + ]); + + break; + } + + // Registramos la respuesta del usuario + + $resultado = Juego::registrarRespuesta($idPartida, $idUsuario, $idPartidaxPregunta, $idRespuesta); + + echo json_encode($resultado); + + break; + + // Finalizar la partida y registrar los aciertos del usuario - // Recibe los aciertos del jugador al terminar sus 10 preguntas, - // para que resultados.php los pueda usar al montar la hoja de resultados case 'finalizarPartida': $aciertos = intval($_POST['aciertos'] ?? 0); + // Guardamos los aciertos en la sesión + if (!isset($_SESSION['aciertosPorPartida'])) { + $_SESSION['aciertosPorPartida'] = []; } @@ -81,16 +120,21 @@ switch ($_POST['orden'] ?? '') { echo json_encode([ 'exito' => 'Aciertos registrados correctamente.', + 'idPartida' => $idPartida, + 'aciertos' => $aciertos ]); - break; - + break; default: - echo json_encode(['error' => 'La orden indicada no existe.']); + echo json_encode([ + 'error' => 'La orden indicada no existe.' + ]); - break; -} \ No newline at end of file + break; +} + +?> diff --git a/js/juego.js b/js/juego.js index 4d4df09..468d16d 100644 --- a/js/juego.js +++ b/js/juego.js @@ -20,7 +20,18 @@ let bloqueado = false; // true mientras se envía una respuesta o se ve el feedb let numeroAciertos = 0; // número de aciertos del jugador $(document).ready(function () { - idPartida = parseInt($("body").data("id-partida"), 10); + + // Obtenemos el idPartida de la URL + // Ejemplo: juego.php?idPartida=3 + + const parametros = new URLSearchParams(window.location.search); + + idPartida = parseInt(parametros.get("idPartida"), 10); + + if (!idPartida || idPartida < 1) { + mostrarError("La partida indicada no es válida."); + return; + } // Un solo listener para todos los botones de respuesta $("#respuestas").on("click", ".btn-answer", function () { @@ -103,6 +114,7 @@ function responder($botonPulsado) { if (bloqueado) { return; } + bloqueado = true; const pregunta = preguntas[indice]; @@ -216,4 +228,4 @@ function mostrarError(mensaje) { $("#feedback").html( 'Volver al buscador de salas', ); -} \ No newline at end of file +} diff --git a/juego.php b/juego.php index 6bf99af..fe6b85b 100644 --- a/juego.php +++ b/juego.php @@ -1,22 +1,6 @@ - + @@ -24,28 +8,48 @@ if (!$idPartida || $idPartida < 1) { Proyecto Trivial + - - + + + +
- Cargando… + + + Cargando… + +
+
+
+
- + +
-
Cargando preguntas…
+ +
+ Cargando preguntas… +
+
+
- + +
+ + +