diff --git a/questionService/package-lock.json b/questionService/package-lock.json
index 8e034d5..e260180 100644
--- a/questionService/package-lock.json
+++ b/questionService/package-lock.json
@@ -10,6 +10,7 @@
"license": "ISC",
"dependencies": {
"axios": "^1.6.7",
+ "cors": "^2.8.5",
"express": "^4.18.2"
}
},
@@ -137,6 +138,18 @@
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
"integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
},
+ "node_modules/cors": {
+ "version": "2.8.5",
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+ "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+ "dependencies": {
+ "object-assign": "^4",
+ "vary": "^1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
"node_modules/debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@@ -521,6 +534,14 @@
"node": ">= 0.6"
}
},
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/object-inspect": {
"version": "1.13.1",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
@@ -860,6 +881,15 @@
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
"integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
},
+ "cors": {
+ "version": "2.8.5",
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+ "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+ "requires": {
+ "object-assign": "^4",
+ "vary": "^1"
+ }
+ },
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@@ -1127,6 +1157,11 @@
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
"integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
},
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="
+ },
"object-inspect": {
"version": "1.13.1",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
diff --git a/questionService/package.json b/questionService/package.json
index 9e9ef55..bedb9b2 100644
--- a/questionService/package.json
+++ b/questionService/package.json
@@ -2,16 +2,17 @@
"name": "rest",
"version": "1.0.0",
"description": "",
- "main": "index.js",
+ "main": "server.js",
"scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
+ "start": "node server.js",
+ "test": "jest"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"axios": "^1.6.7",
+ "cors": "^2.8.5",
"express": "^4.18.2"
}
-
}
diff --git a/questionService/server.js b/questionService/server.js
index bfc2dc5..f0fe6c0 100644
--- a/questionService/server.js
+++ b/questionService/server.js
@@ -1,40 +1,60 @@
-// Importa Express.js
+// Importamos el módulo Express para crear un servidor web
const express = require('express');
+// Importamos el módulo Axios para realizar solicitudes HTTP
+const axios = require('axios');
+const cors = require('cors');
-// Crea una instancia de Express
+// Creamos una nueva aplicación Express
const app = express();
-const PORT = 3001;
+app.use(cors());
-// Ruta de ejemplo
-app.get('/', (req, res) => {
- res.send('¡Hola, mundo!');
+// Definimos una ruta GET en '/pregunta'
+app.get('/pregunta', async (req, res) => {
+ // URL del endpoint SPARQL de Wikidata
+ const url = "https://query.wikidata.org/sparql";
+ // Consulta SPARQL para obtener países y sus capitales
+ const query = `
+ SELECT ?country ?countryLabel ?capital ?capitalLabel WHERE {
+ ?country wdt:P31 wd:Q6256;
+ wdt:P36 ?capital.
+ SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],es". }
+ }
+ LIMIT 50
+ `;
+ // Realizamos la solicitud HTTP GET al endpoint SPARQL con la consulta
+ const response = await axios.get(url, { params: { format: 'json', query } });
+ // Extraemos los resultados de la consulta
+ const bindings = response.data.results.bindings;
+ // Seleccionamos un índice aleatorio para la respuesta correcta
+ const correctAnswerIndex = Math.floor(Math.random() * bindings.length);
+ // Obtenemos la respuesta correcta
+ const correctAnswer = bindings[correctAnswerIndex];
+ // Creamos la pregunta
+ const question = `¿Cuál es la capital de ${correctAnswer.countryLabel.value}?`;
+ // Inicializamos las respuestas con la respuesta correcta
+ const answerGood = correctAnswer.capitalLabel.value;
+ const answers = [answerGood];
+ // Añadimos tres respuestas incorrectas
+ for (let i = 0; i < 3; i++) {
+ let randomIndex;
+ do {
+ // Seleccionamos un índice aleatorio distinto al de la respuesta correcta
+ randomIndex = Math.floor(Math.random() * bindings.length);
+ } while (randomIndex === correctAnswerIndex);
+ // Añadimos la capital del país seleccionado aleatoriamente a las respuestas
+ answers.push(bindings[randomIndex].capitalLabel.value);
+ }
+ // Mezclamos las respuestas
+ for (let i = answers.length - 1; i > 0; i--) {
+ const j = Math.floor(Math.random() * (i + 1));
+ // Intercambiamos las respuestas en los índices i y j
+ [answers[i], answers[j]] = [answers[j], answers[i]];
+ }
+ // Enviamos la pregunta y las respuestas como respuesta a la solicitud HTTP
+ res.json({ question, answerGood, answers });
});
-// Inicia el servidor
-app.listen(PORT, () => {
- console.log(`Servidor escuchando en el puerto ${PORT}`);
-});
-
-// Definimos la URL de la API de Wikidata para buscar información sobre un tema específico
-const searchUrl = 'https://www.wikidata.org/w/rest.php/wikibase/v0/entities/items/';
-
-// Función para obtener información sobre un tema específico
-function buscarInformacion(tema) {
- // Construimos la URL de búsqueda concatenando el tema a la URL base
- const url = searchUrl + tema
- console.log(url)
-
- // Realizamos la solicitud GET a la API de Wikidata
- fetch(url)
- .then(response => response.json())
- .then(data => {
- console.log(data)
- })
- .catch(error => console.error('Error al buscar información:', error));
-}
+// Iniciamos el servidor en el puerto 3000
+const server = app.listen(2500, () => console.log('El servidor está escuchando en el puerto 2500'));
-// Ejemplo de uso: buscar información sobre el tema "JavaScript"
-app.get('/search', (req, res) => {
- res.send('¡Hola, mundo!');
- buscarInformacion("Q42");
- });
+module.exports = server
\ No newline at end of file
diff --git a/questionService/serverSPARQL.js b/questionService/serverSPARQL.js
deleted file mode 100644
index 76e04fb..0000000
--- a/questionService/serverSPARQL.js
+++ /dev/null
@@ -1,55 +0,0 @@
-// Importamos el módulo Express para crear un servidor web
-const express = require('express');
-// Importamos el módulo Axios para realizar solicitudes HTTP
-const axios = require('axios');
-
-// Creamos una nueva aplicación Express
-const app = express();
-
-// Definimos una ruta GET en '/pregunta'
-app.get('/pregunta', async (req, res) => {
- // URL del endpoint SPARQL de Wikidata
- const url = "https://query.wikidata.org/sparql";
- // Consulta SPARQL para obtener países y sus capitales
- const query = `
- SELECT ?country ?countryLabel ?capital ?capitalLabel WHERE {
- ?country wdt:P31 wd:Q6256;
- wdt:P36 ?capital.
- SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],es". }
- }
- LIMIT 50
- `;
- // Realizamos la solicitud HTTP GET al endpoint SPARQL con la consulta
- const response = await axios.get(url, { params: { format: 'json', query } });
- // Extraemos los resultados de la consulta
- const bindings = response.data.results.bindings;
- // Seleccionamos un índice aleatorio para la respuesta correcta
- const correctAnswerIndex = Math.floor(Math.random() * bindings.length);
- // Obtenemos la respuesta correcta
- const correctAnswer = bindings[correctAnswerIndex];
- // Creamos la pregunta
- const question = `¿Cuál es la capital de ${correctAnswer.countryLabel.value}?`;
- // Inicializamos las respuestas con la respuesta correcta
- const answers = [correctAnswer.capitalLabel.value];
- // Añadimos tres respuestas incorrectas
- for (let i = 0; i < 3; i++) {
- let randomIndex;
- do {
- // Seleccionamos un índice aleatorio distinto al de la respuesta correcta
- randomIndex = Math.floor(Math.random() * bindings.length);
- } while (randomIndex === correctAnswerIndex);
- // Añadimos la capital del país seleccionado aleatoriamente a las respuestas
- answers.push(bindings[randomIndex].capitalLabel.value);
- }
- // Mezclamos las respuestas
- for (let i = answers.length - 1; i > 0; i--) {
- const j = Math.floor(Math.random() * (i + 1));
- // Intercambiamos las respuestas en los índices i y j
- [answers[i], answers[j]] = [answers[j], answers[i]];
- }
- // Enviamos la pregunta y las respuestas como respuesta a la solicitud HTTP
- res.json({ question, answers });
-});
-
-// Iniciamos el servidor en el puerto 3000
-app.listen(2500, () => console.log('El servidor está escuchando en el puerto 2500'));
diff --git a/webapp/package-lock.json b/webapp/package-lock.json
index 0cac471..a564081 100644
--- a/webapp/package-lock.json
+++ b/webapp/package-lock.json
@@ -5,6 +5,7 @@
"requires": true,
"packages": {
"": {
+ "name": "webapp",
"version": "0.1.0",
"dependencies": {
"@emotion/react": "^11.11.3",
diff --git a/webapp/src/components/Pages/Juego.js b/webapp/src/components/Pages/Juego.js
index 5d2632b..029e87d 100644
--- a/webapp/src/components/Pages/Juego.js
+++ b/webapp/src/components/Pages/Juego.js
@@ -1,24 +1,68 @@
// src/components/Login.js
-import React, { useState } from 'react';
+import React, { useState, useEffect } from 'react';
import axios from 'axios';
import '../Estilos/juego.css';
import { Container, Typography, TextField, Button, Snackbar } from '@mui/material';
-const botonRespuesta = (event) => {
- //comprobara si la respuesta es correcta o no
+const Juego = ({isLogged}) => {
+ const [pregunta, setPregunta] = useState("")
+ const [resCorr, setResCorr] = useState("")
+ const [resFalse, setResFalse] = useState([])
+ const [respondido, setRespodido] = useState(false)
+ const [victoria, setVictoria] = useState(false)
+
+ const botonRespuesta = (respuesta) => {
+ //comprobara si la respuesta es correcta o no
+ setRespodido(true)
+ if(respuesta == resCorr){
+ console.log("entro a respuesat correcta")
+ setVictoria(true)
+ }
+ else{
+ setVictoria(false)
+ }
+ };
+
+ async function CargarPregunta(pregunta, resCorr, resFalse){
+ useEffect(() => {
+ fetch("http://localhost:2500/pregunta")
+ .then((res) => res.json())
+ .then((todo) => {
+ setPregunta(todo.question)
+ setResCorr(todo.answerGood)
+ setResFalse(todo.answers)
+ });
+ }, []);
+ console.log(pregunta);
+ console.log(resCorr);
+ console.log(resFalse)
}
-const Juego = ({isLogged}) => {
+ CargarPregunta(pregunta, resCorr, resFalse);
+
+
return (
- PREGUNTA
-