Contenido del curso

Fundamentos de Programación

Desarrollando un juego con HTML y JavaScript

Estilos con CSS

Optimización de código

Mapa con canvas

Backend: videojuego multijugador

Mostrar y ocultar secciones con JavaScript

Resumen

Aprende a controlar la visibilidad de secciones en una página web usando la propiedad style.display de JavaScript. Esta técnica te permite mostrar elementos solo cuando el usuario los necesita, mejorando la experiencia de un juego o aplicación interactiva como Mokepon.

¿Por qué ocultar secciones HTML con JavaScript?

Cuando construyes un juego por turnos como Mokepon, no quieres que todas las secciones aparezcan al mismo tiempo. Si el botón de reiniciar está visible desde el inicio, el jugador puede reiniciar la partida antes de empezar. Si la sección de ataques se muestra siempre, alguien podría atacar sin haber elegido mascota.

La solución está en mostrar cada sección solo en el momento adecuado del flujo: primero elegir mascota, luego atacar y, al final, reiniciar [02:30].

¿Qué hace style.display = 'none' en JavaScript? Oculta visualmente un elemento HTML sin eliminarlo del DOM. El elemento sigue existiendo en el código, pero el usuario no puede verlo ni interactuar con él.

¿Cómo funciona la propiedad style.display?

Todos los elementos HTML tienen una propiedad style donde se guardan sus estilos visuales, los mismos que también puedes definir con CSS. El navegador, ya sea Chrome, Firefox o el que prefieras, asigna estilos por defecto a botones, textos y demás elementos [05:40].

Dentro de esa propiedad existe display, que controla si el elemento se renderiza o no. Los dos valores que vas a usar en este flujo son:

  • none: oculta el elemento por completo.
  • block: lo muestra como un bloque visible.

¿Dónde debo ocultar la sección de ataques al iniciar?

El mejor lugar es la función iniciarJuego, porque se ejecuta apenas carga el HTML. Ahí seleccionas el elemento por su ID y le aplicas display = 'none'.

javascript function iniciarJuego() { sectionSeleccionarAtaque = document.getElementById('seleccionar-ataque') sectionSeleccionarAtaque.style.display = 'none'

sectionReiniciar = document.getElementById('reiniciar') sectionReiniciar.style.display = 'none'

}

Si inspeccionas el DOM con las DevTools, verás que la sección sigue ahí. Solo está oculta visualmente.

¿Cómo muestro la sección cuando el jugador elige mascota?

La función seleccionarMascotaJugador se ejecuta al hacer clic en el botón de seleccionar. Ese es el momento exacto para cambiar el display de la sección de ataques a block y, al mismo tiempo, ocultar la sección de elegir mascota.

javascript function seleccionarMascotaJugador() { sectionSeleccionarAtaque.style.display = 'block' sectionSeleccionarMascota = document.getElementById('seleccionar-mascota') sectionSeleccionarMascota.style.display = 'none' }

Así el jugador ve un solo paso a la vez: primero elige a Hipodogue o Capipepo, le da clic a seleccionar y entonces aparecen los botones de ataque [08:15].

¿Cuándo debo mostrar el botón de reiniciar el juego?

El botón de reiniciar solo tiene sentido cuando alguien ganó o perdió. Por eso lo escondes desde iniciarJuego con display = 'none' y lo muestras dentro de crearMensajeFinal, que es la función responsable de mostrar el resultado y deshabilitar los botones de ataque.

javascript function crearMensajeFinal(resultadoFinal) { sectionReiniciar.style.display = 'block' }

Con esto, el flujo del juego queda así:

  1. El jugador entra y solo ve la sección de elegir mascota.
  2. Selecciona su mascota y aparece la sección de ataques.
  3. Cuando alguna mascota llega a cero vidas, aparece el botón de reiniciar.

¿Por qué uso block y no otro valor? block muestra el elemento como un bloque que ocupa todo el ancho disponible. Existen otros valores como flex o inline, pero para secciones completas block es el que devuelve el comportamiento por defecto.

¿Qué ganas al controlar la visibilidad con JavaScript?

La lógica del juego ya estaba lista: selección aleatoria del enemigo, ataques por turnos, conteo de vidas de tres a cero y deshabilitar botones al terminar. Lo que añade style.display es control sobre la experiencia del usuario: cada pantalla aparece cuando debe.

Esta misma técnica la vas a reutilizar en formularios por pasos, modales, menús desplegables y cualquier interfaz donde quieras revelar contenido de forma progresiva. El siguiente paso natural es darle estilos con CSS para que tu Mokepon deje de tener fondo blanco y texto negro, y se vea como un juego de verdad.

¿En qué parte de tu proyecto vas a aplicar primero style.display? Cuéntame en los comentarios.