Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f155f28af5 | |||
| 0d2ce3cf86 |
+3
-2
@@ -10,11 +10,12 @@
|
|||||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.13.1/font/bootstrap-icons.min.css">
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.13.1/font/bootstrap-icons.min.css">
|
||||||
<link rel="stylesheet" href="css/index.css">
|
<link rel="stylesheet" href="css/index.css">
|
||||||
<link rel="stylesheet" href="css/buscadorSala.css">
|
<link rel="stylesheet" href="css/buscadorSala.css">
|
||||||
|
<script src="js/jquery-4.0.0.min.js"></script>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
<?php include_once("cabecera.php"); ?>
|
<header id="cabecera-container"></header>
|
||||||
|
|
||||||
<main class="container py-4">
|
<main class="container py-4">
|
||||||
|
|
||||||
@@ -99,7 +100,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
|
||||||
<script src="js/jquery-4.0.0.min.js"></script>
|
<script src="js/cabecera.js"></script>
|
||||||
<script src="js/buscadorSala.js"></script>
|
<script src="js/buscadorSala.js"></script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
@@ -0,0 +1,96 @@
|
|||||||
|
<!-- cabecera.html -->
|
||||||
|
<nav class="navbar navbar-expand-lg navbar-kahoot py-3 mb-4">
|
||||||
|
<div class="container">
|
||||||
|
<a class="navbar-brand" href="index.php">
|
||||||
|
<img src="img/favicon/favicon.svg" alt="TRIVIAGMÁTICO" class="me-2" style="height: 35px;">
|
||||||
|
TRIVIAGMÁTICO
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarContent">
|
||||||
|
<span class="navbar-toggler-icon"></span>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<div class="collapse navbar-collapse" id="navbarContent">
|
||||||
|
<ul class="navbar-nav me-auto mb-2 mb-lg-0"></ul>
|
||||||
|
|
||||||
|
<!-- Contenedor dinámico de usuario/botones -->
|
||||||
|
<div class="d-flex align-items-center gap-3" id="contenedorUsuarioCabecera"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<!-- MODAL DE LOGIN -->
|
||||||
|
<div class="modal fade" id="modalLogin" tabindex="-1" aria-labelledby="loginModalLabel" aria-hidden="true">
|
||||||
|
<div class="modal-dialog modal-dialog-centered">
|
||||||
|
<div class="modal-content border-dark">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h1 class="modal-title fs-5 fw-bold" id="loginModalLabel">
|
||||||
|
<i class="fa-solid fa-right-to-bracket text-primary me-2"></i>Iniciar sesión
|
||||||
|
</h1>
|
||||||
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Cerrar"></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<form id="formLogin">
|
||||||
|
<div class="form-floating mb-3">
|
||||||
|
<input type="email" class="form-control border-dark" id="loginEmail" name="email" placeholder="Correo electrónico" required>
|
||||||
|
<label for="loginEmail">Correo electrónico</label>
|
||||||
|
</div>
|
||||||
|
<div class="form-floating mb-3">
|
||||||
|
<input type="password" class="form-control border-dark" id="loginPassword" name="contrasena" placeholder="Contraseña" required>
|
||||||
|
<label for="loginPassword">Contraseña</label>
|
||||||
|
</div>
|
||||||
|
<div class="form-check">
|
||||||
|
<input class="form-check-input" id="recordar" name="recordar" type="checkbox" />
|
||||||
|
<label for="recordar" class="small">Recuérdeme durante 10 días</label>
|
||||||
|
</div>
|
||||||
|
<input type="hidden" name="orden" value="validar">
|
||||||
|
</form>
|
||||||
|
<div id="errorLogin" class="text-danger fw-bold mt-2"></div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-secondary rounded-pill px-3" data-bs-dismiss="modal">Cancelar</button>
|
||||||
|
<button type="button" class="btn btn-primary rounded-pill px-4" id="botonAceptarLogin">Entrar</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- MODAL DE REGISTRO -->
|
||||||
|
<div class="modal fade" id="modalRegistro" tabindex="-1" aria-labelledby="registroModalLabel" aria-hidden="true">
|
||||||
|
<div class="modal-dialog modal-dialog-centered">
|
||||||
|
<div class="modal-content border-dark">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h1 class="modal-title fs-5 fw-bold" id="registroModalLabel">
|
||||||
|
<i class="fa-solid fa-user-plus text-success me-2"></i>Registrarse
|
||||||
|
</h1>
|
||||||
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Cerrar"></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<form id="formRegistro">
|
||||||
|
<div class="form-floating mb-3">
|
||||||
|
<input type="text" class="form-control border-dark" id="regNombre" name="nombreUsuario" placeholder="Nombre" required>
|
||||||
|
<label for="regNombre">Nombre</label>
|
||||||
|
</div>
|
||||||
|
<div class="form-floating mb-3">
|
||||||
|
<input type="email" class="form-control border-dark" id="regEmail" name="email" placeholder="Correo electrónico" required>
|
||||||
|
<label for="regEmail">Correo electrónico</label>
|
||||||
|
</div>
|
||||||
|
<div class="form-floating mb-3">
|
||||||
|
<input type="password" class="form-control border-dark" id="regPassword" name="contrasena" placeholder="Contraseña" required>
|
||||||
|
<label for="regPassword">Contraseña</label>
|
||||||
|
</div>
|
||||||
|
<div class="form-floating mb-3">
|
||||||
|
<input type="password" class="form-control border-dark" id="regPasswordConfirm" name="contrasenaConfirm" placeholder="Confirmar contraseña" required>
|
||||||
|
<label for="regPasswordConfirm">Confirmar contraseña</label>
|
||||||
|
</div>
|
||||||
|
<input type="hidden" name="orden" value="registrar">
|
||||||
|
</form>
|
||||||
|
<div id="errorRegistro" class="text-danger fw-bold mt-2"></div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-secondary rounded-pill px-3" data-bs-dismiss="modal">Cancelar</button>
|
||||||
|
<button type="button" class="btn btn-success rounded-pill px-4" id="botonAceptarRegistro">Registrarse</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
-108
@@ -1,108 +0,0 @@
|
|||||||
<!-- Bootstrap 5 CSS -->
|
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
|
||||||
<!-- FontAwesome para iconos -->
|
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css">
|
|
||||||
<!-- Google Fonts para estilo Kahoot -->
|
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Fredoka:wght@400;600;700&display=swap" rel="stylesheet">
|
|
||||||
<link rel="stylesheet" href="css/index.css">
|
|
||||||
<script src="js/jquery-4.0.0.min.js"></script>
|
|
||||||
|
|
||||||
<nav class="navbar navbar-expand-lg navbar-kahoot py-3 mb-4">
|
|
||||||
<div class="container">
|
|
||||||
<a class="navbar-brand" href="index.php">
|
|
||||||
<img src="img/favicon/favicon.svg" alt="TRIVIAGMÁTICO" class="me-2" style="height: 35px;">
|
|
||||||
TRIVIAGMÁTICO
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarContent">
|
|
||||||
<span class="navbar-toggler-icon"></span>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<div class="collapse navbar-collapse" id="navbarContent">
|
|
||||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0"></ul>
|
|
||||||
|
|
||||||
<!-- Contenedor dinámico de usuario/botones -->
|
|
||||||
<div class="d-flex align-items-center gap-3" id="contenedorUsuarioCabecera">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<!-- MODAL DE LOGIN -->
|
|
||||||
<div class="modal fade" id="modalLogin" tabindex="-1" aria-labelledby="loginModalLabel" aria-hidden="true">
|
|
||||||
<div class="modal-dialog modal-dialog-centered">
|
|
||||||
<div class="modal-content border-dark">
|
|
||||||
<div class="modal-header">
|
|
||||||
<h1 class="modal-title fs-5 fw-bold" id="loginModalLabel">
|
|
||||||
<i class="fa-solid fa-right-to-bracket text-primary me-2"></i>Iniciar sesión
|
|
||||||
</h1>
|
|
||||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Cerrar"></button>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<form id="formLogin">
|
|
||||||
<div class="form-floating mb-3">
|
|
||||||
<input type="email" class="form-control border-dark" id="loginEmail" name="email" placeholder="Correo electrónico" required>
|
|
||||||
<label for="loginEmail">Correo electrónico</label>
|
|
||||||
</div>
|
|
||||||
<div class="form-floating mb-3">
|
|
||||||
<input type="password" class="form-control border-dark" id="loginPassword" name="contrasena" placeholder="Contraseña" required>
|
|
||||||
<label for="loginPassword">Contraseña</label>
|
|
||||||
</div>
|
|
||||||
<div class="form-check">
|
|
||||||
<input class="form-check-input" id="recordar" name="recordar" type="checkbox" />
|
|
||||||
<label for="recordar" class="small">Recuérdeme durante 10 días</label>
|
|
||||||
</div>
|
|
||||||
<input type="hidden" name="orden" value="validar">
|
|
||||||
</form>
|
|
||||||
<div id="errorLogin" class="text-danger fw-bold mt-2"></div>
|
|
||||||
</div>
|
|
||||||
<div class="modal-footer">
|
|
||||||
<button type="button" class="btn btn-secondary rounded-pill px-3" data-bs-dismiss="modal">Cancelar</button>
|
|
||||||
<button type="button" class="btn btn-primary rounded-pill px-4" id="botonAceptarLogin">Entrar</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- MODAL DE REGISTRO -->
|
|
||||||
<div class="modal fade" id="modalRegistro" tabindex="-1" aria-labelledby="registroModalLabel" aria-hidden="true">
|
|
||||||
<div class="modal-dialog modal-dialog-centered">
|
|
||||||
<div class="modal-content border-dark">
|
|
||||||
<div class="modal-header">
|
|
||||||
<h1 class="modal-title fs-5 fw-bold" id="registroModalLabel">
|
|
||||||
<i class="fa-solid fa-user-plus text-success me-2"></i>Registrarse
|
|
||||||
</h1>
|
|
||||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Cerrar"></button>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<form id="formRegistro">
|
|
||||||
<div class="form-floating mb-3">
|
|
||||||
<input type="text" class="form-control border-dark" id="regNombre" name="nombreUsuario" placeholder="Nombre" required>
|
|
||||||
<label for="regNombre">Nombre</label>
|
|
||||||
</div>
|
|
||||||
<div class="form-floating mb-3">
|
|
||||||
<input type="email" class="form-control border-dark" id="regEmail" name="email" placeholder="Correo electrónico" required>
|
|
||||||
<label for="regEmail">Correo electrónico</label>
|
|
||||||
</div>
|
|
||||||
<div class="form-floating mb-3">
|
|
||||||
<input type="password" class="form-control border-dark" id="regPassword" name="contrasena" placeholder="Contraseña" required>
|
|
||||||
<label for="regPassword">Contraseña</label>
|
|
||||||
</div>
|
|
||||||
<div class="form-floating mb-3">
|
|
||||||
<input type="password" class="form-control border-dark" id="regPasswordConfirm" name="contrasenaConfirm" placeholder="Confirmar contraseña" required>
|
|
||||||
<label for="regPasswordConfirm">Confirmar contraseña</label>
|
|
||||||
</div>
|
|
||||||
<input type="hidden" name="orden" value="registrar">
|
|
||||||
</form>
|
|
||||||
<div id="errorRegistro" class="text-danger fw-bold mt-2"></div>
|
|
||||||
</div>
|
|
||||||
<div class="modal-footer">
|
|
||||||
<button type="button" class="btn btn-secondary rounded-pill px-3" data-bs-dismiss="modal">Cancelar</button>
|
|
||||||
<button type="button" class="btn btn-success rounded-pill px-4" id="botonAceptarRegistro">Registrarse</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script src="js/cabecera.js"></script>
|
|
||||||
@@ -229,13 +229,7 @@ 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(
|
public static function registrarRespuesta($idPartida, $idUsuario, $idPartidaxPregunta, $idRespuesta)
|
||||||
$idPartida,
|
|
||||||
$idUsuario,
|
|
||||||
$idPartidaxPregunta,
|
|
||||||
$idRespuesta,
|
|
||||||
$tiempoRespuesta
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
$conexion = conexionBD();
|
$conexion = conexionBD();
|
||||||
if (is_array($conexion)) {
|
if (is_array($conexion)) {
|
||||||
@@ -304,8 +298,7 @@ class Juego
|
|||||||
null,
|
null,
|
||||||
$idPartidaxPregunta,
|
$idPartidaxPregunta,
|
||||||
$idUsuario,
|
$idUsuario,
|
||||||
$idRespuesta,
|
$idRespuesta
|
||||||
$tiempoRespuesta
|
|
||||||
);
|
);
|
||||||
$guardado = $almacenada->guardarRespuesta();
|
$guardado = $almacenada->guardarRespuesta();
|
||||||
|
|
||||||
|
|||||||
@@ -24,8 +24,6 @@ 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,14 +7,12 @@ 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, $tiempoRespuesta = null) {
|
public function __construct($idRespuestaAlmacenada = null, $idPartidaxPregunta = null, $idUsuario = null, $idRespuesta = 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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -22,37 +20,29 @@ class RespuestaAlmacenada {
|
|||||||
*/
|
*/
|
||||||
public function guardarRespuesta() {
|
public function guardarRespuesta() {
|
||||||
$conexion = conexionBD();
|
$conexion = conexionBD();
|
||||||
|
if (is_array($conexion)) return $conexion;
|
||||||
if (is_array($conexion)) {
|
|
||||||
return $conexion;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$sql = "INSERT INTO respuestaalmacenada
|
$sql = "INSERT INTO respuestaalmacenada (idPartidaxPregunta, idUsuario, idRespuesta)
|
||||||
(idPartidaxPregunta, idUsuario, idRespuesta, tiempoRespuesta)
|
VALUES (:idPartidaxPregunta, :idUsuario, :idRespuesta)";
|
||||||
VALUES
|
|
||||||
(:idPartidaxPregunta, :idUsuario, :idRespuesta, :tiempoRespuesta)";
|
|
||||||
|
|
||||||
$consulta = $conexion->prepare($sql);
|
$consulta = $conexion->prepare($sql);
|
||||||
|
|
||||||
$consulta->bindParam(':idPartidaxPregunta', $this->idPartidaxPregunta);
|
$consulta->bindParam(':idPartidaxPregunta', $this->idPartidaxPregunta);
|
||||||
$consulta->bindParam(':idUsuario', $this->idUsuario);
|
$consulta->bindParam(':idUsuario', $this->idUsuario);
|
||||||
$consulta->bindParam(':idRespuesta', $this->idRespuesta);
|
$consulta->bindParam(':idRespuesta', $this->idRespuesta);
|
||||||
$consulta->bindParam(':tiempoRespuesta', $this->tiempoRespuesta);
|
|
||||||
|
|
||||||
$consulta->execute();
|
$consulta->execute();
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'exito' => 'Respuesta almacenada correctamente.'
|
'exito' => 'Respuesta del usuario almacenada correctamente.',
|
||||||
|
'exito_tecnico' => $conexion->lastInsertId()
|
||||||
];
|
];
|
||||||
|
|
||||||
} catch (PDOException $error) {
|
} catch (PDOException $error) {
|
||||||
return [
|
return [
|
||||||
'error' => 'Ocurrió un error al guardar la respuesta.',
|
'error' => 'Ocurrió un error al guardar la respuesta del jugador.',
|
||||||
'error_tecnico' => $error->getMessage()
|
'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.
|
||||||
|
|||||||
@@ -74,11 +74,7 @@ switch ($orden) {
|
|||||||
|
|
||||||
case 'responder':
|
case 'responder':
|
||||||
|
|
||||||
if (
|
if (!isset($_POST['idPartidaxPregunta']) || !isset($_POST['idRespuesta'])){
|
||||||
!isset($_POST['idPartidaxPregunta']) ||
|
|
||||||
!isset($_POST['idRespuesta']) ||
|
|
||||||
!isset($_POST['tiempoRespuesta'])
|
|
||||||
) {
|
|
||||||
echo json_encode([
|
echo json_encode([
|
||||||
'error' => 'Faltan datos para registrar la respuesta.'
|
'error' => 'Faltan datos para registrar la respuesta.'
|
||||||
]);
|
]);
|
||||||
@@ -87,14 +83,11 @@ switch ($orden) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$idPartidaxPregunta = intval($_POST['idPartidaxPregunta']);
|
$idPartidaxPregunta = intval($_POST['idPartidaxPregunta']);
|
||||||
$idRespuesta = intval($_POST['idRespuesta']);
|
|
||||||
$tiempoRespuesta = intval($_POST['tiempoRespuesta']);
|
|
||||||
|
|
||||||
if (
|
$idRespuesta = intval($_POST['idRespuesta']);
|
||||||
$idPartidaxPregunta <= 0 ||
|
|
||||||
$idRespuesta <= 0 ||
|
if ($idPartidaxPregunta <= 0 || $idRespuesta <= 0){
|
||||||
$tiempoRespuesta < 0
|
|
||||||
) {
|
|
||||||
echo json_encode([
|
echo json_encode([
|
||||||
'error' => 'Los datos de la respuesta no son válidos.'
|
'error' => 'Los datos de la respuesta no son válidos.'
|
||||||
]);
|
]);
|
||||||
@@ -102,19 +95,13 @@ switch ($orden) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Registramos la respuesta del usuario junto con su tiempo de respuesta
|
// Registramos la respuesta del usuario
|
||||||
|
|
||||||
$resultado = Juego::registrarRespuesta(
|
$resultado = Juego::registrarRespuesta($idPartida, $idUsuario, $idPartidaxPregunta, $idRespuesta);
|
||||||
$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
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 29 KiB |
@@ -6,11 +6,20 @@
|
|||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Triviagmático</title>
|
<title>Triviagmático</title>
|
||||||
<link rel="icon" type="image/svg+xml" href="img/favicon/favicon.svg">
|
<link rel="icon" type="image/svg+xml" href="img/favicon/favicon.svg">
|
||||||
|
<!-- Bootstrap 5 CSS -->
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||||
|
<!-- FontAwesome para iconos -->
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css">
|
||||||
|
<!-- Google Fonts para estilo Kahoot -->
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Fredoka:wght@400;600;700&display=swap" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="css/index.css">
|
||||||
|
<script src="js/jquery-4.0.0.min.js"></script>
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
<?php include 'cabecera.php'; ?>
|
<header id="cabecera-container"></header>
|
||||||
|
|
||||||
<div class="container my-5">
|
<div class="container my-5">
|
||||||
<div class="row justify-content-center align-items-center g-4">
|
<div class="row justify-content-center align-items-center g-4">
|
||||||
@@ -46,6 +55,7 @@
|
|||||||
<!-- JS de Bootstrap -->
|
<!-- JS de Bootstrap -->
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||||
<script src="js/index.js"></script>
|
<script src="js/index.js"></script>
|
||||||
|
<script src="js/cabecera.js"></script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
+9
-3
@@ -2,7 +2,13 @@ let idUsuarioSesion = null;
|
|||||||
|
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
comprobarSesion();
|
comprobarSesion();
|
||||||
});
|
// Carga la cabecera html
|
||||||
|
$("#cabecera-container").load("cabecera.html", function () {
|
||||||
|
// Después de cargar cabecera comprobamos sesión
|
||||||
|
comprobarSesion();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
// Función auxiliar para escapar texto HTML
|
// Función auxiliar para escapar texto HTML
|
||||||
function escapeHTML(str) {
|
function escapeHTML(str) {
|
||||||
@@ -92,7 +98,7 @@ function comprobarSesion() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Registro
|
// Registro
|
||||||
$("#botonAceptarRegistro").click(function (event) {
|
$(document).on("click", "#botonAceptarRegistro", function (event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
|
||||||
let nombreUsuario = $("#regNombre").val().trim();
|
let nombreUsuario = $("#regNombre").val().trim();
|
||||||
@@ -145,7 +151,7 @@ $("#botonAceptarRegistro").click(function (event) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Login
|
// Login
|
||||||
$("#botonAceptarLogin").click(function (event) {
|
$(document).on("click", "#botonAceptarLogin", function (event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
|
||||||
let email = $("#loginEmail").val().trim();
|
let email = $("#loginEmail").val().trim();
|
||||||
|
|||||||
+1
-11
@@ -18,10 +18,9 @@ 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
|
||||||
|
|
||||||
@@ -84,11 +83,6 @@ 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);
|
||||||
@@ -117,9 +111,6 @@ 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;
|
||||||
}
|
}
|
||||||
@@ -140,7 +131,6 @@ 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) {
|
||||||
|
|||||||
+2
-1
@@ -41,7 +41,7 @@ $avatarUsuario = htmlspecialchars($_SESSION['avatar'] ?? 'img/avatars/defaultPro
|
|||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
<?php include_once 'cabecera.php'; ?>
|
<header id="cabecera-container"></header>
|
||||||
|
|
||||||
<div class="perfil-container">
|
<div class="perfil-container">
|
||||||
|
|
||||||
@@ -310,6 +310,7 @@ $avatarUsuario = htmlspecialchars($_SESSION['avatar'] ?? 'img/avatars/defaultPro
|
|||||||
|
|
||||||
<!-- Tu JavaScript -->
|
<!-- Tu JavaScript -->
|
||||||
<script src="js/perfil.js"></script>
|
<script src="js/perfil.js"></script>
|
||||||
|
<script src="js/cabecera.js"></script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user