Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| cbdbd8bc4b | |||
| befc6a7cc1 | |||
| e9cf7c8fcf |
@@ -229,7 +229,13 @@ class Juego
|
|||||||
* - la respuesta pertenece a esa pregunta
|
* - la respuesta pertenece a esa pregunta
|
||||||
* - el usuario no ha respondido ya esa pregunta
|
* - el usuario no ha respondido ya esa pregunta
|
||||||
*/
|
*/
|
||||||
public static function registrarRespuesta($idPartida, $idUsuario, $idPartidaxPregunta, $idRespuesta)
|
public static function registrarRespuesta(
|
||||||
|
$idPartida,
|
||||||
|
$idUsuario,
|
||||||
|
$idPartidaxPregunta,
|
||||||
|
$idRespuesta,
|
||||||
|
$tiempoRespuesta
|
||||||
|
)
|
||||||
{
|
{
|
||||||
$conexion = conexionBD();
|
$conexion = conexionBD();
|
||||||
if (is_array($conexion)) {
|
if (is_array($conexion)) {
|
||||||
@@ -298,7 +304,8 @@ class Juego
|
|||||||
null,
|
null,
|
||||||
$idPartidaxPregunta,
|
$idPartidaxPregunta,
|
||||||
$idUsuario,
|
$idUsuario,
|
||||||
$idRespuesta
|
$idRespuesta,
|
||||||
|
$tiempoRespuesta
|
||||||
);
|
);
|
||||||
$guardado = $almacenada->guardarRespuesta();
|
$guardado = $almacenada->guardarRespuesta();
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ class Respuesta{
|
|||||||
$consulta->bindParam(':idPregunta', $this->idPregunta);
|
$consulta->bindParam(':idPregunta', $this->idPregunta);
|
||||||
$consulta->bindParam(':nombreRespuesta', $this->nombreRespuesta);
|
$consulta->bindParam(':nombreRespuesta', $this->nombreRespuesta);
|
||||||
$consulta->bindParam(':correcta', $this->correcta);
|
$consulta->bindParam(':correcta', $this->correcta);
|
||||||
|
|
||||||
|
|
||||||
$consulta->execute();
|
$consulta->execute();
|
||||||
$respuesta = [
|
$respuesta = [
|
||||||
'exito' => 'La respuesta se guardó correctamente.',
|
'exito' => 'La respuesta se guardó correctamente.',
|
||||||
|
|||||||
@@ -7,43 +7,53 @@ class RespuestaAlmacenada {
|
|||||||
public $idPartidaxPregunta;
|
public $idPartidaxPregunta;
|
||||||
public $idUsuario;
|
public $idUsuario;
|
||||||
public $idRespuesta;
|
public $idRespuesta;
|
||||||
|
public $tiempoRespuesta;
|
||||||
|
|
||||||
public function __construct($idRespuestaAlmacenada = null, $idPartidaxPregunta = null, $idUsuario = null, $idRespuesta = null) {
|
public function __construct($idRespuestaAlmacenada = null, $idPartidaxPregunta = null, $idUsuario = null, $idRespuesta = null, $tiempoRespuesta = null) {
|
||||||
$this->idRespuestaAlmacenada = $idRespuestaAlmacenada;
|
$this->idRespuestaAlmacenada = $idRespuestaAlmacenada;
|
||||||
$this->idPartidaxPregunta = $idPartidaxPregunta;
|
$this->idPartidaxPregunta = $idPartidaxPregunta;
|
||||||
$this->idUsuario = $idUsuario;
|
$this->idUsuario = $idUsuario;
|
||||||
$this->idRespuesta = $idRespuesta;
|
$this->idRespuesta = $idRespuesta;
|
||||||
|
$this->tiempoRespuesta = $tiempoRespuesta;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Guarda la respuesta que ha seleccionado un usuario en una pregunta de la partida.
|
* Guarda la respuesta que ha seleccionado un usuario en una pregunta de la partida.
|
||||||
*/
|
*/
|
||||||
public function guardarRespuesta() {
|
public function guardarRespuesta() {
|
||||||
$conexion = conexionBD();
|
$conexion = conexionBD();
|
||||||
if (is_array($conexion)) return $conexion;
|
|
||||||
|
|
||||||
try {
|
if (is_array($conexion)) {
|
||||||
$sql = "INSERT INTO respuestaalmacenada (idPartidaxPregunta, idUsuario, idRespuesta)
|
return $conexion;
|
||||||
VALUES (:idPartidaxPregunta, :idUsuario, :idRespuesta)";
|
|
||||||
$consulta = $conexion->prepare($sql);
|
|
||||||
|
|
||||||
$consulta->bindParam(':idPartidaxPregunta', $this->idPartidaxPregunta);
|
|
||||||
$consulta->bindParam(':idUsuario', $this->idUsuario);
|
|
||||||
$consulta->bindParam(':idRespuesta', $this->idRespuesta);
|
|
||||||
$consulta->execute();
|
|
||||||
|
|
||||||
return [
|
|
||||||
'exito' => 'Respuesta del usuario almacenada correctamente.',
|
|
||||||
'exito_tecnico' => $conexion->lastInsertId()
|
|
||||||
];
|
|
||||||
} catch (PDOException $error) {
|
|
||||||
return [
|
|
||||||
'error' => 'Ocurrió un error al guardar la respuesta del jugador.',
|
|
||||||
'error_tecnico' => $error->getMessage()
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
$sql = "INSERT INTO respuestaalmacenada
|
||||||
|
(idPartidaxPregunta, idUsuario, idRespuesta, tiempoRespuesta)
|
||||||
|
VALUES
|
||||||
|
(:idPartidaxPregunta, :idUsuario, :idRespuesta, :tiempoRespuesta)";
|
||||||
|
|
||||||
|
$consulta = $conexion->prepare($sql);
|
||||||
|
|
||||||
|
$consulta->bindParam(':idPartidaxPregunta', $this->idPartidaxPregunta);
|
||||||
|
$consulta->bindParam(':idUsuario', $this->idUsuario);
|
||||||
|
$consulta->bindParam(':idRespuesta', $this->idRespuesta);
|
||||||
|
$consulta->bindParam(':tiempoRespuesta', $this->tiempoRespuesta);
|
||||||
|
|
||||||
|
$consulta->execute();
|
||||||
|
|
||||||
|
return [
|
||||||
|
'exito' => 'Respuesta almacenada correctamente.'
|
||||||
|
];
|
||||||
|
|
||||||
|
} catch (PDOException $error) {
|
||||||
|
return [
|
||||||
|
'error' => 'Ocurrió un error al guardar la respuesta.',
|
||||||
|
'error_tecnico' => $error->getMessage()
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Obtiene los aciertos totales de un usuario en una partida específica.
|
* Obtiene los aciertos totales de un usuario en una partida específica.
|
||||||
* Útil para calcular las estadísticas individuales al terminar el juego.
|
* Útil para calcular las estadísticas individuales al terminar el juego.
|
||||||
|
|||||||
@@ -74,34 +74,47 @@ switch ($orden) {
|
|||||||
|
|
||||||
case 'responder':
|
case 'responder':
|
||||||
|
|
||||||
if (!isset($_POST['idPartidaxPregunta']) || !isset($_POST['idRespuesta'])){
|
if (
|
||||||
echo json_encode([
|
!isset($_POST['idPartidaxPregunta']) ||
|
||||||
'error' => 'Faltan datos para registrar la respuesta.'
|
!isset($_POST['idRespuesta']) ||
|
||||||
]);
|
!isset($_POST['tiempoRespuesta'])
|
||||||
|
) {
|
||||||
|
echo json_encode([
|
||||||
|
'error' => 'Faltan datos para registrar la respuesta.'
|
||||||
|
]);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
$idPartidaxPregunta = intval($_POST['idPartidaxPregunta']);
|
$idPartidaxPregunta = intval($_POST['idPartidaxPregunta']);
|
||||||
|
$idRespuesta = intval($_POST['idRespuesta']);
|
||||||
|
$tiempoRespuesta = intval($_POST['tiempoRespuesta']);
|
||||||
|
|
||||||
$idRespuesta = intval($_POST['idRespuesta']);
|
if (
|
||||||
|
$idPartidaxPregunta <= 0 ||
|
||||||
if ($idPartidaxPregunta <= 0 || $idRespuesta <= 0){
|
$idRespuesta <= 0 ||
|
||||||
|
$tiempoRespuesta < 0
|
||||||
echo json_encode([
|
) {
|
||||||
'error' => 'Los datos de la respuesta no son válidos.'
|
echo json_encode([
|
||||||
]);
|
'error' => 'Los datos de la respuesta no son válidos.'
|
||||||
|
]);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Registramos la respuesta del usuario
|
// Registramos la respuesta del usuario junto con su tiempo de respuesta
|
||||||
|
|
||||||
$resultado = Juego::registrarRespuesta($idPartida, $idUsuario, $idPartidaxPregunta, $idRespuesta);
|
$resultado = Juego::registrarRespuesta(
|
||||||
|
$idPartida,
|
||||||
|
$idUsuario,
|
||||||
|
$idPartidaxPregunta,
|
||||||
|
$idRespuesta,
|
||||||
|
$tiempoRespuesta
|
||||||
|
);
|
||||||
|
|
||||||
echo json_encode($resultado);
|
echo json_encode($resultado);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// Finalizar la partida y registrar los aciertos del usuario
|
// Finalizar la partida y registrar los aciertos del usuario
|
||||||
|
|
||||||
|
|||||||
+11
-1
@@ -18,9 +18,10 @@ let preguntas = [];
|
|||||||
let indice = 0; // pregunta que se está mostrando
|
let indice = 0; // pregunta que se está mostrando
|
||||||
let bloqueado = false; // true mientras se envía una respuesta o se ve el feedback
|
let bloqueado = false; // true mientras se envía una respuesta o se ve el feedback
|
||||||
let numeroAciertos = 0; // número de aciertos del jugador
|
let numeroAciertos = 0; // número de aciertos del jugador
|
||||||
|
let tiempoRespuesta = 0;
|
||||||
|
let intervaloTiempo;
|
||||||
|
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
|
|
||||||
// Obtenemos el idPartida de la URL
|
// Obtenemos el idPartida de la URL
|
||||||
// Ejemplo: juego.php?idPartida=3
|
// Ejemplo: juego.php?idPartida=3
|
||||||
|
|
||||||
@@ -83,6 +84,11 @@ function cargarPreguntas() {
|
|||||||
function mostrarPregunta() {
|
function mostrarPregunta() {
|
||||||
const pregunta = preguntas[indice];
|
const pregunta = preguntas[indice];
|
||||||
|
|
||||||
|
tiempoRespuesta = 0;
|
||||||
|
intervaloTiempo = setInterval(function () {
|
||||||
|
tiempoRespuesta++;
|
||||||
|
}, 100);
|
||||||
|
|
||||||
bloqueado = false;
|
bloqueado = false;
|
||||||
|
|
||||||
$("#textoPregunta").text(pregunta.nombrePregunta);
|
$("#textoPregunta").text(pregunta.nombrePregunta);
|
||||||
@@ -111,6 +117,9 @@ function mostrarPregunta() {
|
|||||||
|
|
||||||
// 3. El usuario pulsa una respuesta: se guarda y se enseña si ha acertado
|
// 3. El usuario pulsa una respuesta: se guarda y se enseña si ha acertado
|
||||||
function responder($botonPulsado) {
|
function responder($botonPulsado) {
|
||||||
|
clearInterval(intervaloTiempo);
|
||||||
|
console.log("Tiempo de respuesta: " + tiempoRespuesta / 10 + " segundos");
|
||||||
|
|
||||||
if (bloqueado) {
|
if (bloqueado) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -131,6 +140,7 @@ function responder($botonPulsado) {
|
|||||||
idPartida: idPartida,
|
idPartida: idPartida,
|
||||||
idPartidaxPregunta: pregunta.idPartidaxPregunta,
|
idPartidaxPregunta: pregunta.idPartidaxPregunta,
|
||||||
idRespuesta: idRespuesta,
|
idRespuesta: idRespuesta,
|
||||||
|
tiempoRespuesta: tiempoRespuesta,
|
||||||
},
|
},
|
||||||
success: function (datos) {
|
success: function (datos) {
|
||||||
if (datos.error) {
|
if (datos.error) {
|
||||||
|
|||||||
Reference in New Issue
Block a user