Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 81fd47ee4b | |||
| 4bba08fb69 | |||
| a2928d1433 | |||
| fb269fdc28 |
+6
-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,8 +100,11 @@
|
|||||||
</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>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
@@ -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>
|
||||||
@@ -1,118 +1,79 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
session_start();
|
session_start();
|
||||||
|
|
||||||
require_once '../clases/claseJuego.php';
|
require_once '../clases/claseJuego.php';
|
||||||
|
|
||||||
header('Content-Type: application/json; charset=utf-8');
|
header('Content-Type: application/json; charset=utf-8');
|
||||||
|
|
||||||
// Comprobamos que haya un usuario conectado
|
// Hay que estar logueado y decir de qué partida se trata
|
||||||
|
|
||||||
if (!isset($_SESSION['idUsuario'])) {
|
if (!isset($_SESSION['idUsuario'])) {
|
||||||
echo json_encode([
|
echo json_encode(['error' => 'Debes iniciar sesión para jugar.']);
|
||||||
'error' => 'Debes iniciar sesión para jugar.'
|
|
||||||
]);
|
|
||||||
|
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
$idUsuario = (int)$_SESSION['idUsuario'];
|
$idUsuario = (int)$_SESSION['idUsuario'];
|
||||||
|
$idPartida = intval($_POST['idPartida'] ?? 0);
|
||||||
// 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) {
|
if ($idPartida <= 0) {
|
||||||
echo json_encode([
|
echo json_encode(['error' => 'No se ha indicado la partida.']);
|
||||||
'error' => 'La partida indicada no es válida.'
|
|
||||||
]);
|
|
||||||
|
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Comprobamos que el usuario pertenezca a la partida
|
// Solo pueden jugar los usuarios que están en uno de los equipos de la partida
|
||||||
|
|
||||||
$perteneceAPartida = Juego::usuarioEnPartida($idPartida, $idUsuario);
|
$perteneceAPartida = Juego::usuarioEnPartida($idPartida, $idUsuario);
|
||||||
|
|
||||||
if (is_array($perteneceAPartida)) {
|
if (is_array($perteneceAPartida)) {
|
||||||
echo json_encode($perteneceAPartida);
|
echo json_encode($perteneceAPartida);
|
||||||
|
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!$perteneceAPartida) {
|
if (!$perteneceAPartida) {
|
||||||
echo json_encode([
|
echo json_encode(['error' => 'No formas parte de esta partida.']);
|
||||||
'error' => 'No formas parte de esta partida.'
|
|
||||||
]);
|
|
||||||
|
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Comprobamos la orden
|
|
||||||
|
|
||||||
$orden = $_POST['orden'] ?? '';
|
switch ($_POST['orden'] ?? '') {
|
||||||
|
|
||||||
switch ($orden) {
|
|
||||||
|
|
||||||
// CARGAR LAS PREGUNTAS DE LA PARTIDA
|
|
||||||
|
|
||||||
|
// Devuelve las 10 preguntas con sus respuestas (sin marcar la correcta)
|
||||||
case 'cargarPreguntas':
|
case 'cargarPreguntas':
|
||||||
|
|
||||||
$resultado = Juego::cargarPreguntas($idPartida, $idUsuario);
|
echo json_encode(Juego::cargarPreguntas($idPartida, $idUsuario));
|
||||||
echo json_encode($resultado);
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// REGISTRAR RESPUESTA
|
|
||||||
|
|
||||||
|
// Guarda la respuesta del usuario y dice si ha acertado
|
||||||
case 'responder':
|
case 'responder':
|
||||||
|
|
||||||
if (!isset($_POST['idPartidaxPregunta']) || !isset($_POST['idRespuesta'])){
|
$idPartidaxPregunta = intval($_POST['idPartidaxPregunta'] ?? 0);
|
||||||
echo json_encode([
|
$idRespuesta = intval($_POST['idRespuesta'] ?? 0);
|
||||||
'error' => 'Faltan datos para registrar la respuesta.'
|
|
||||||
]);
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
$idPartidaxPregunta = intval($_POST['idPartidaxPregunta']);
|
|
||||||
|
|
||||||
$idRespuesta = intval($_POST['idRespuesta']);
|
|
||||||
|
|
||||||
if ($idPartidaxPregunta <= 0 || $idRespuesta <= 0) {
|
if ($idPartidaxPregunta <= 0 || $idRespuesta <= 0) {
|
||||||
|
echo json_encode(['error' => 'Faltan datos para registrar la respuesta.']);
|
||||||
echo json_encode([
|
|
||||||
'error' => 'Los datos de la respuesta no son válidos.'
|
|
||||||
]);
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Registramos la respuesta del usuario
|
echo json_encode(
|
||||||
|
Juego::registrarRespuesta(
|
||||||
$resultado = Juego::registrarRespuesta($idPartida, $idUsuario, $idPartidaxPregunta, $idRespuesta);
|
$idPartida,
|
||||||
|
$idUsuario,
|
||||||
echo json_encode($resultado);
|
$idPartidaxPregunta,
|
||||||
|
$idRespuesta
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
break;
|
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':
|
case 'finalizarPartida':
|
||||||
|
|
||||||
$aciertos = intval($_POST['aciertos'] ?? 0);
|
$aciertos = intval($_POST['aciertos'] ?? 0);
|
||||||
|
|
||||||
// Guardamos los aciertos en la sesión
|
|
||||||
|
|
||||||
if (!isset($_SESSION['aciertosPorPartida'])) {
|
if (!isset($_SESSION['aciertosPorPartida'])) {
|
||||||
|
|
||||||
$_SESSION['aciertosPorPartida'] = [];
|
$_SESSION['aciertosPorPartida'] = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -120,21 +81,16 @@ switch ($orden) {
|
|||||||
|
|
||||||
echo json_encode([
|
echo json_encode([
|
||||||
'exito' => 'Aciertos registrados correctamente.',
|
'exito' => 'Aciertos registrados correctamente.',
|
||||||
|
|
||||||
'idPartida' => $idPartida,
|
'idPartida' => $idPartida,
|
||||||
|
|
||||||
'aciertos' => $aciertos
|
'aciertos' => $aciertos
|
||||||
]);
|
]);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
||||||
echo json_encode([
|
echo json_encode(['error' => 'La orden indicada no existe.']);
|
||||||
'error' => 'La orden indicada no existe.'
|
|
||||||
]);
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
||||||
|
|||||||
@@ -6,11 +6,19 @@
|
|||||||
<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">
|
||||||
@@ -45,6 +53,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/cabecera.js"></script>
|
||||||
<script src="js/index.js"></script>
|
<script src="js/index.js"></script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,14 @@
|
|||||||
let idUsuarioSesion = null;
|
let idUsuarioSesion = null;
|
||||||
|
|
||||||
|
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
|
// Carga la cabecera html
|
||||||
|
$("#cabecera-container").load("cabecera.html", function () {
|
||||||
|
// Después de cargar cabecera comprobamos sesión
|
||||||
comprobarSesion();
|
comprobarSesion();
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
// Función auxiliar para escapar texto HTML
|
// Función auxiliar para escapar texto HTML
|
||||||
function escapeHTML(str) {
|
function escapeHTML(str) {
|
||||||
@@ -204,3 +210,4 @@ $(document).on("click", "#botonCerrarSesion", function (event) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+1
-13
@@ -20,18 +20,7 @@ let bloqueado = false; // true mientras se envía una respuesta o se ve el feedb
|
|||||||
let numeroAciertos = 0; // número de aciertos del jugador
|
let numeroAciertos = 0; // número de aciertos del jugador
|
||||||
|
|
||||||
$(document).ready(function () {
|
$(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
|
// Un solo listener para todos los botones de respuesta
|
||||||
$("#respuestas").on("click", ".btn-answer", function () {
|
$("#respuestas").on("click", ".btn-answer", function () {
|
||||||
@@ -114,7 +103,6 @@ function responder($botonPulsado) {
|
|||||||
if (bloqueado) {
|
if (bloqueado) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
bloqueado = true;
|
bloqueado = true;
|
||||||
|
|
||||||
const pregunta = preguntas[indice];
|
const pregunta = preguntas[indice];
|
||||||
|
|||||||
@@ -1,6 +1,22 @@
|
|||||||
|
<?php
|
||||||
|
session_start();
|
||||||
|
|
||||||
|
// Hay que estar logueado para jugar
|
||||||
|
if (!isset($_SESSION['idUsuario'])) {
|
||||||
|
header('Location: index.php');
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
// La partida llega por la URL: juego.php?idPartida=3
|
||||||
|
$idPartida = filter_input(INPUT_GET, 'idPartida', FILTER_VALIDATE_INT);
|
||||||
|
|
||||||
|
if (!$idPartida || $idPartida < 1) {
|
||||||
|
header('Location: buscadorSala.php');
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="es">
|
<html lang="es">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
@@ -8,48 +24,28 @@
|
|||||||
<title>Proyecto Trivial</title>
|
<title>Proyecto Trivial</title>
|
||||||
<link rel="stylesheet" href="css/juego.css">
|
<link rel="stylesheet" href="css/juego.css">
|
||||||
<link rel="icon" type="image/svg+xml" href="img/favicon/favicon.svg">
|
<link rel="icon" type="image/svg+xml" href="img/favicon/favicon.svg">
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
<body data-id-partida="<?= (int)$idPartida ?>">
|
||||||
|
|
||||||
<body>
|
<!-- Progreso: "Pregunta 3 de 10" + barra -->
|
||||||
|
|
||||||
<!-- CABECERA Y PROGRESO -->
|
|
||||||
|
|
||||||
<div class="game-header">
|
<div class="game-header">
|
||||||
|
<span id="contadorPregunta">Cargando…</span>
|
||||||
<span id="contadorPregunta">
|
|
||||||
Cargando…
|
|
||||||
</span>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="progress-track">
|
<div class="progress-track">
|
||||||
|
|
||||||
<div class="progress-fill" id="barraProgreso"></div>
|
<div class="progress-fill" id="barraProgreso"></div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- PREGUNTA -->
|
<!-- Contenedor de la Pregunta (lo rellena js/juego.js) -->
|
||||||
|
|
||||||
<div class="question-container">
|
<div class="question-container">
|
||||||
|
<div id="textoPregunta">Cargando preguntas…</div>
|
||||||
<div id="textoPregunta">
|
|
||||||
Cargando preguntas…
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="feedback" class="feedback" aria-live="polite"></div>
|
<div id="feedback" class="feedback" aria-live="polite"></div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- RESPUESTAS -->
|
<!-- Contenedor de Respuestas (Estilo Kahoot, lo rellena js/juego.js) -->
|
||||||
|
|
||||||
<div class="answers-grid" id="respuestas"></div>
|
<div class="answers-grid" id="respuestas"></div>
|
||||||
|
|
||||||
<!-- JAVASCRIPT -->
|
|
||||||
|
|
||||||
<script src="js/jquery-4.0.0.min.js"></script>
|
<script src="js/jquery-4.0.0.min.js"></script>
|
||||||
<script src="js/juego.js"></script>
|
<script src="js/juego.js"></script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Reference in New Issue
Block a user