Creando un juego con JavaScript - 02

GameDev
JavaScript
Published

July 6, 2026

Modified

July 6, 2026

En la entrada anterior ya pudimos mostrar en consola el resultado de dar clic sobre la opción que consideramos correcta y la web nos decía si así lo fue. Sin embargo, no es una arquitectura adecuada para un juego que incluya más preguntas. Pasemos a realizar los cambios adecuados, básicamente eliminar la mayoría de lo escrito.

// Definimos el objeto para la pregunta
let pregunta = {
    nombre: "cat",
    opciones: ["perro", "gato", "pájaro", "pescado"],
    correcta: 1
};

function inicio() {

}

function mostrarPregunta(p) {

}

inicio();

La idea es separar el código de inicio de la funcionalidad que muestra cada pregunta. Por ello creamos la función inicio(), la cual creará los detectores de eventos y entonces mostrará la primera pregunta. Así, mostrarPregunta() solo hará lo que su nombre indica.

Función inicio()

Dentro de esta seleccionamos todas las opciones y colocamos un placeholder que mandará a consola el mensaje de verificación de respuesta correcta. Lo importante es crear los detectores de eventos solo una vez, al inicio de la aplicación.

function inicio() {
    // obtener opciones
    let alts = document.querySelectorAll(".opcion");
    // agregar manejadores de eventos
    alts.forEach(function(element, index) {
        element.addEventListener("click", function() {
            // verificar respuesta correcta
            console.log("verificar respuesta correcta")
        });
    });

    // Muestra primera pregunta
    mostrarPregunta(pregunta);
}

Función mostrarPregunta()

La editamos de manera que quede como sigue:

function mostrarPregunta(p) {
    // Muestra el nombre de pregunta
    let nombreDiv = document.getElementById("nombre");
    nombreDiv.textContent = p.nombre;

    // Muestra alternativas
    let alts = document.querySelectorAll(".opcion");
    alts.forEach(function(elements, index) {
        elements.textContent = p.opciones[index];
    });
}

Podemos ejecutar esto y tendremos casi lo mismo que antes.

Back to top