Fundamentos de Programación

1

Bienvenida a Platzi: ¿qué necesitas para tomar el curso?

2

¿Cómo aprender programación?

3

Crea tu primer sitio web

4

Sitios web con HTML

5

Estructura de árbol en HTML

6

Instalando tu primer editor de código

7

Cómo declarar variables y usar prompt

8

Algoritmo de piedra, papel o tijera

9

Algoritmo avanzado de piedra, papel o tijera

10

Aleatoriedad

11

Refactor del código usando funciones

12

Ciclos

13

Gana 3 veces

14

Archivos de HTML y JavaScript

15

¿Qué es el DOM?

Quiz: Fundamentos de Programación

Desarrollando un juego con HTML y JavaScript

16

Maquetación con HTML

17

Sección de elegir mascota

18

¿Dónde ubicar la etiqueta script? Conectando HTML con JavaScript

19

Escuchando eventos con JavaScript

20

addEventListener

21

Manipulación del DOM

22

Enemigos aleatorios

23

Ataques en JavaScript

24

Ataques aleatorios del enemigo

25

Imprimiendo ataques del enemigo

26

¿Ganaste, perdiste o empataste?

27

Tablas de verdad

28

Creando el contador de vidas

29

¿Quién ganó el juego?

30

Reiniciando el juego

31

Ocultando elementos HTML con JS para mejorar la UX del juego

Quiz: Desarrollando un juego con HTML y JavaScript

Estilos con CSS

32

Anatomía de CSS

33

Tipos de display

34

Flexbox

35

Modelo de caja

36

Imágenes para los Mokepones

37

Estilos del botón

38

Adaptando HTML al diseño del juego

39

Layout: título y ataques

40

Adaptando JavaScript al diseño del juego

41

CSS Grid

42

Responsive Design

43

Detalles finales

Quiz: Estilos con CSS

Optimización de código

44

Revisión de código

45

Don't repeat yourself (DRY)

46

Clases y objetos

47

Clases y objetos de Mokepon

48

Arrays o arreglos

49

Objetos vs. arreglos

50

Ciclos: manipulando el DOM con iteradores

51

Declaración lenta de variables

52

Una sola fuente de la verdad

53

Mascotas aleatorias con arreglos

54

Ataques dinámicos por cada mascota: extraer

55

Renderizado dinámico en HTML

56

Eventos de click dinámicos

57

Secuencia de ataques del enemigo

58

Iniciando el combate

59

Resolviendo el reto de condicionales

60

Optimizando el frontend del juego

Quiz: Optimización de código

Mapa con canvas

61

Introducción a canvas: dibujando con JavaScript

62

Moviendo a Capipepo hacia la derecha

63

Movimiento hacia todas las direcciones

64

Movimientos con el teclado

65

Imágenes y personajes de fondo

66

Métodos en las clases

67

Obstáculos y colisiones

68

Combate entre mokepones colisionados

69

Mapa responsive

70

Botones bonitos y viewport

Quiz: Mapa con canvas

Backend: videojuego multijugador

71

¿Qué es backend?

72

Instalación de Node.js y NPM

73

Terminal de comandos y Node.js

74

Servidor web con Express.js

75

HTTP, localhost, servidores y puertos

76

Express.js y fetch: API REST con JavaScript

77

JSON y POST: mokepon online

78

Transmisión de coordenadas

79

Mokepones dinámicos en el mapa

80

Optimizando el mapa del juego

81

Batalla entre jugadores

82

Consumiendo la API de ataques del enemigo

Quiz: Backend: videojuego multijugador

Próximos pasos

83

Probando el juego en varios dispositivos

84

¿Y ahora qué curso tomar?

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Flexbox

34/84
Recursos

Aportes 105

Preguntas 46

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Asi va quedando.

Estoy fascinado con todas las posibilidades!!! después de probar distintas combinaciones va quedando más o menos así:

Para cuando quieran mover una linea de código pueden presionar " ALT + (flecha de abajo o arriba) " para que no estén copiando y pegando la linea en la parte que quieran, esto les puede ahorrar un buen de tiempo

El poster esta genial, me hubiera gustado conocerlo antes, para imprimirlo y colgarlo jaja.

No es mucho, pero es trabajo honesto

En flexbox se trabaja con elementos hijos y elementos padre

  • Elementos Padre: son aquellos que contienen otras etiquetas o elementos por dentro
  • Elementos hijos: son aquellos elementos que están dentro de un elemento padre y no contienen a nadie más por dentro

<aside>
💡 Pueden haber padres dentro de otros padres, pero en este caso son hijos y padres al mismo tiempo, por lo que pueden usar ambas propiedades al tiempo

</aside>

Retomando el curso…


No se si a uno de ustedes les pasa, pero al menos a mi, a medida que voy evolucionando me va como que gustando mas este mundo. Cuando vemos un tema complejo por primera vez, sí que frustra, pero si recordamos que programar es controlar esa frustración, y nos damos el tiempo para digerir los temas, llega un punto en el que no digamos que lo dominas, pero lo entiendes muy bien, y es donde sientes mucha gratificación porque te das cuenta de que si se puede.
Never Stop Learning!!!

Así esta quedando mi juego por ahora.

CSS-TRICKS super bueno!!

Hola, por un momento al final no me estaba dando la distribución como a la profe, y era porque cuando copiaba el código no me daba. Luego me di cuenta que después de flex no había puesto “;” y esto como que inhabilitaba lo que seguía. Podrías servirles si de pronto les pasa lo mismo 😃

Con las herramientas del inspector podemos agregar cosas como justify-content y demás para ir viendo cómo queda el resultado. En este caso el justify-content no se logra percibir debido a que no hay suficiente espacio para ejecutarlo

Para ello podemos usar todo el tamaño de lo que estamos viendo en pantalla, usando 100vh como medida en height

vh = view height

Lo último que podemos hacer es centrar en el medio de la pantalla el contenido, con:

align-items: center;

De esta manera, todo lo del contenido de seleccionar mascota queda centrado

#seleccionar-mascota{
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
}
En la parte de abajo de los recursos hay un link para entrar a un juego para aprender flexbox, ¡me encantó! 🥰🥰🐸💗![](https://static.platzi.com/media/user_upload/image-f56c2e93-0831-43a9-88e6-c42bf3945d7a.jpg)

Creo que he tenido más confusiones con CSS que con JS 😦

flexbox --> permite alinear elementos vertical u horizontalmente por medio de contenedores

flex-direction --> direcion del elemento
row --> fila
column --> columna
justify-content --> espacio entre elementos
align-items --> alineacion del elemento

Flexbox es un sistema de diseño de CSS que permite crear diseños flexibles y adaptativos.
Con Flexbox, se pueden organizar elementos de manera sencilla en una página web, independientemente del tamaño de la pantalla o del contenido.

Voy a usar nord theme como paleta de colores, si hay tiempo lo paso a dracula theme.

Recuerdo que cuando iniciaba a aparender maquetaba por medio de tablas de html y era algunas veces facil otras no salia como queria.😄😄

Envio aporte para mantener la llama viva :) ![](https://static.platzi.com/media/user_upload/Pagina%20pokemon%201-9c557b1b-a56f-4cf9-9522-a6a114f210cf.jpg)
Aquí esta el enlace de la documentación en inglés, uff esta espectacular si entran a la parte inicial encontraran más temas y el diseño esta increíble: <https://css-tricks.com/snippets/css/a-guide-to-flexbox/>
Hola a todos No se por que el input de Ratigueya y el Botón de seleccionar me aparecen en la misma linea Ya he revisado mi html con el de la clase y esta igual ![](https://static.platzi.com/media/user_upload/image-7ccdee7e-8170-4d49-9949-665de8182e66.jpg)
habla mas alto porfas no le escuchoooooo
Buenas noches a tod@s. No me conecta lo trabajado en Js con la consola en mozilla. Qué se puede hacer en ese caso, ya me confundí al intentar resolverlo.

No puedo concentrarme con la belleza de la profesora 😁

es un buen curso, pero se me vive trabando el video desde que terminó la parte de freddy, debería poder cambiarse la calidad de reproduccion de video. he probado en otra computadora, incluso en un dispositivo móvil, y en todos se traba, es la única plataforma que se me traba, por lo que mi internet no es. 😦

Para que lo guarden en sus apuntes de la clase:

tengo 20 años y me estoy adentrando en un mundo completamente nuevo, antes me decidí a aprender francés creyendo que no iba a llegar lejos, y si llegué lejos, lo mismo con el inglés y ahora estoy pensando que no llegaré lejos en la programación pero ya veremos, ademas esta muy chida la manera de enseñar de los maestros aquí en platzi,y con la información que podemos encontrar en internet es impresionante también asi que algo me dice que si llegaré lejos pero eso si a estudiar todos los dias 💪. Y muchismas gracias por este curso, son los mejores!!!

css me da dolor de cabeza, me gusta mas editar codigo en javascript la verdad 😦

Hola, les dejo una guía interactiva de flexbox, espero que les pueda servir(: https://www.joshwcomeau.com/css/interactive-guide-to-flexbox/

Una guía completa en donde podras aprender a usar el flexbox

https://css-tricks.com/snippets/css/a-guide-to-flexbox/#aa-background

La etiqueta button es nieto de section y section es abuelo de button, ¿y el padre de ellos? la etiqueta p 🤣

  1. Usar en css el :
    display: flex;

  2. acompanado de ( flex-direction:row;)
    display: flex;
    flex-direction:row;

El resultado es el mismo.

Es decir usar el flex-direction o no usarlo es indiferente, por default el (display: flex) usa row.

Junto con Diego DeGranda, la profesora Estefany transmite una vibra y personalidad muy positivas. Los otros profesores igual tienen lo suyo, en general casi todos me agradan, pero los dos previamente mencionados para mi tienen algo especial en su manera de hablar.

![](

Flexbox es una herramienta súper poderosa que tenemos en CSS para poder alinear elementos y posicionarlos en la web

Con flexbox se puede organizar elementos de manera vertical o horizontal (No se pueden ambas)

![](https://static.platzi.com/media/user_upload/image-856a9c58-fc13-42fc-978c-3dae242ffc8a.jpg) centrando todo: ![](https://static.platzi.com/media/user_upload/image-a37f572a-f58c-473f-b10f-51a60410a653.jpg)
Hola, por favor explicas en el inspector donde poner element.style { height: 100vh, } pero no veo en qué parte del código lo has puesto...muchas gracias
![](https://static.platzi.com/media/user_upload/image-21fddcd7-091e-471e-8551-012cb96f14b1.jpg) Como puedo hacer para justificar al centro tambien el h1? Aunque esta dentro de "seleccionar-mascota", no toma las mismas propiedades que el resto
Un breve resumen de la clase: ![](https://static.platzi.com/media/user_upload/Flexbox%201-5022b8a2-e10b-4509-9a42-80cbb4d88941.jpg) ![](https://static.platzi.com/media/user_upload/Flexbox%202-ba411da2-7445-4d62-8d45-c86cfbf769c4.jpg)
![](https://static.platzi.com/media/user_upload/image-a75e3982-8995-43af-b353-10d2af048b3b.jpg) Bueno aquí mi aporte, no sé si de pronto en otras clases los tomen el siguiente detalle, pero tuve problemas con mis secciones, el Flex tiene que ser muy dependiente a los "padres" por lo tanto si no está acomodado en la sección adecuada, el código se rompe Anteriormente a mi selector-mascota tenía una etiqueta div para un boton de inicio de juego y tuve muchos problemas ya que al iniciar el Flex no actuaba, puesto que la seccion dependia de ese Dev para solucion hice bloque para cada uno ![](https://static.platzi.com/media/user_upload/image-929f9464-e369-4f44-b79f-232ccb6da5d4.jpg) para luego caer en cuenta que en JS tenia conflicto puesto que yo puse un display para el boton de START asi que en lugar de borrarlo, cambie el "Block" por un flex para que el codigo JS leyera CSS y HTML lo proyectara No sé si hasta este punto haya dado un punto claro pero en conclujsion el Flex afecta tambien el JS
![](https://static.platzi.com/media/user_upload/image-c6ee0e21-eaf8-46fa-9301-bf4c7723e167.jpg) haci me esta quedando pero yo veo a otros queles queda mejor
Hola amig@s programadores 👋🏽. Increíble clase, no? Por aquí les dejo un enlace que les ayudará muchísimo para aprender a manejar FLEXBOX de la mejor forma que es jugando. Espero les sirva de apoyo 😎 FlexBox Froggy <https://flexboxfroggy.com/#es> ![](https://static.platzi.com/media/user_upload/image-d6963050-44a4-4323-a879-9e6e960fb023.jpg)
Excelente Profesora ;)
Envio el aporte de mi avance <https://etzadev.github.io/desafio-arcano/> ![](https://static.platzi.com/media/user_upload/Captura%20de%20pantalla%202024-07-11%20222744-aff77c79-3e1c-4d7a-a078-e011597826fb.jpg) ![](https://static.platzi.com/media/user_upload/Captura%20de%20pantalla%202024-07-11%20223025-fe7c0992-26c9-4e2f-ac88-1905e5b77e47.jpg)
Estoy haciendo este curso gratuito de Platzi. Coincidencialmente estaba editando el diseño de mi página web para mejorar el SEO y gracias a entender flexbox dejé de sufrir porque no entendía la lógica de cómo se acomodaban los contenedores.
Es realmente impresionante como se puede aprender este tema por medio de juegos, les recomiendo mucho leer los aportes de los demás en donde colocan los enlaces de juegos.
Excelente juego para aprender flexbox, el último nivel es el mejor! ![](https://static.platzi.com/media/user_upload/image-efc48169-4701-41c3-90c9-b094b4c4ef46.jpg)
La profesora explica demasiado bien antes Css me parecía muy difícil, ahora de repente entiendo todo mucho mejor.
aunque la guía de Flexbox sea en ingles siempre tenemos el traductor de Google para traducirlo
Envio aporte pero basicamente es lo que vamos en clase Creo que veré todas las clases primero y luego mostraré el producto final :)![](https://static.platzi.com/media/user_upload/pokemon%20imagen-caf027cb-acf5-462c-a518-17f6ced36ff1.jpg)
lost
chee
lcoc
sublime
flex-direction: column-reverse; flex-wrap: wrap-reverse; justify-content: center; align-content: space-between; ejercicio 24 del juegito de Flexbox Froggy.
![](https://static.platzi.com/media/user_upload/image-3e9dd884-bcd1-466b-9f14-f2fbe788dbf7.jpg)![](https://static.platzi.com/media/user_upload/image-264aff26-d4ae-460b-884f-879be247dd4d.jpg)
![]()![](https://static.platzi.com/media/user_upload/image-e4eb54e9-beb1-4ece-a15a-228a7fc352da.jpg)
![](https://static.platzi.com/media/user_upload/image-8277ed97-cbf6-449e-9e93-96388d6ec056.jpg)
Lo malo es que se "rompe" el código cuando se interactúa... Quizá lo corrijamos en futuras clases, solo que pensaré en una solución antes de avanzar a otras jeje... ![](https://static.platzi.com/media/user_upload/image-a77773c2-359b-46c6-91bc-00f9545ba26c.jpg)

Después de mucho indagar ya pude ponerle flex a esa sección, mi error era que lo tenia bloqueado desde JavaScript xD.

Como se dice: Nunca parar de aprender.

Yo me adelante un poco en como decorar botones y radiales pero va asi le cambie el nombre del juego al de una cancion y en vez de ponerle pokemones raros les puse nombres de idols pero en teoria es lo mismo![](https://cdn.discordapp.com/attachments/752652572468445269/1168417270851186728/image.png?ex=6551b061\&is=653f3b61\&hm=43fd5879a3768d12276b1c04aee25211ab358b2f0c0b13999989313a8af8eddd&)
He tenido problemas con esta unidad, ya que no explican como se debe hacer para que aparezcan los codigos en el google chrome en inspeccionar. No he logrado que me salgan igual como se muestra en la clase.

basicamente me agrada como enseña! ❤❤❤

Que gran herramienta es flex…ufff me siento pintor

cogiéndole amor al css

Super chévere como se controla desde el navegador para después pasar al código.
creo que le falto el height: 100vh; pero bueno también va en la misma section.

ya se puso mas complicada la cosa 🥴

17 de Marzo del 2023. hola comunidad de Platzy tengo una inconveniente con el código voy par la tercera clase de la etapa del css. la consola me arroja este error= Uncaugth ReferenError inputTiburon is not defined, que sería la variante al nombre de Ratigueya. y luego que puse el link de css dentro de HTML el /head cambio de azul a Rojo.... Gracias espero su ayuda

Ha sido increible, uno puede ser un artista con esto.

Algo que noté fue que si no modificábamos el flex-direction a column(el defecto parece ser row), y usábamos align-items: center; , nuestros elementos se centraban de manera vertical


Pero si modificamos el flex-direction a column y usamos align-items: center; , los elementos se centran de manera horizontal


Entonces por lo que veo(alguien corríjame si me equivoco), si los elementos usan flex-direction: row; , justify-content centrará el contenido de manera horizontal y align-items lo hará de manera vertical. Pero si se usa flex-direction: column; , entonces justify-content centra a los elementos de manera vertical, mientras que que align-items lo hace de manera horizontal.

bonita clase, muy bien explicada

.titulo {
font-family: serif;
color: #FFC300;
width: 310px;
height: 50px;
background-color:#FF5733;
}

label{
background-color:lightcyan;
width: 65px;
height: 22px;
}

input{
background-color:orangered;
}

button{
background-color:orange;
}

Genial, siento que flexbox llevará un poco más de trabajo por su complejidad.

Hola, comparto mi avance

Esta tabla es muy completa. Espero les sirva

esto me recuerda bastante al sistema de UI de unity

Aqui esta lo que he hecho ![](url)

👴 Flexbox padres👨Flexbox padres-hijos 👶Flexbox hijos

Es interesante la forma en que se usan los Flexbox para el alineamiento de las paginas web. La verdad, quede impresionado ya que este permite simplificar la mayor cantidad de codigo de estilos el cual hace el trabajo mas facil.

super

Me gusta mucho el avance 😄

Estefany Aguilar creo es una estupides el editar la pagina en el navegador cuando nos esta demostrando a programar en un editor… con todo respeto eso me confunde. Gracias

Flexbox es para mover y posicionar elementos de la pagina en este caso el texto , en programación seria a mover elementos padre (titulo) y a elementos hijo (conetenido del elemento padre, como párrafo etc)

se puede centrar, posicionar en forma de columna, etc.

Caray tengo trabajo el día de hoy 🤣

Excelentes herramientas, gracias por compartir las guías.

**La tecnología flex tiene diferentes propiedades dependiendo si el contenedor es padre o hijo: **

Recurso: CSS-Tricks

Nota: Google Chrome tiene una opción en la consola para ver de manera “previa” el código, en este caso flexbox.

place-items: center;

Es un acortativo de
justify-content: center:
align-items: center;

En flexbox puedes dimensionar de manera vertical u horizontal, no de ambas.

Así va quedando =)

.titulo{color:hotpink;width:310px;height:50px;background-color:teal}#seleccionar-mascota{display:flex;flex-direction:column;justify-content:center;align-items:center}

let ataqueJugador
let ataqueEnemigo
let vidasJugador = 3
let vidasEnemigo = 3

function iniciarJuego() {
let sectionSeleccionarAtaque = document.getElementById(‘seleccionar-ataque’)
sectionSeleccionarAtaque.style.display = ‘none’

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

let botonMascotaJugador = document.getElementById('boton-mascota')
botonMascotaJugador.addEventListener('click', seleccionarMascotaJugador)

let botonFuego = document.getElementById('boton-fuego')
botonFuego.addEventListener('click', ataqueFuego)
let botonAgua = document.getElementById('boton-agua')
botonAgua.addEventListener('click', ataqueAgua)
let botonTierra = document.getElementById('boton-tierra')
botonTierra.addEventListener('click', ataqueTierra)

let botonReiniciar = document.getElementById('boton-reiniciar')
botonReiniciar.addEventListener('click', reiniciarJuego)

}

function seleccionarMascotaJugador() {
let sectionSeleccionarMascota = document.getElementById(‘seleccionar-mascota’)
sectionSeleccionarMascota.style.display = ‘none’

let sectionSeleccionarAtaque = document.getElementById('seleccionar-ataque')
sectionSeleccionarAtaque.style.display = 'block'

let inputHipodoge = document.getElementById('hipodoge')
let inputCapipepo = document.getElementById('capipepo')
let inputRatigueya = document.getElementById('ratigueya')
let spanMascotaJugador = document.getElementById('mascota-jugador')

if (inputHipodoge.checked) {
    spanMascotaJugador.innerHTML = 'Hipodoge'
} else if (inputCapipepo.checked) {
    spanMascotaJugador.innerHTML = 'Capipepo'
} else if (inputRatigueya.checked) {
    spanMascotaJugador.innerHTML = 'Ratigueya'
} else {
    alert('Selecciona una mascota')
}

seleccionarMascotaEnemigo()

}

function seleccionarMascotaEnemigo() {
let mascotaAleatoria = aleatorio(1,3)
let spanMascotaEnemigo = document.getElementById(‘mascota-enemigo’)

if (mascotaAleatoria == 1) {
    spanMascotaEnemigo.innerHTML = 'Hipodoge'
} else if (mascotaAleatoria == 2) {
    spanMascotaEnemigo.innerHTML = 'Capipepo'
} else {
    spanMascotaEnemigo.innerHTML = 'Ratigueya'
}

}

function ataqueFuego() {
ataqueJugador = 'FUEGO’
ataqueAleatorioEnemigo()
}
function ataqueAgua() {
ataqueJugador = 'AGUA’
ataqueAleatorioEnemigo()
}
function ataqueTierra() {
ataqueJugador = 'TIERRA’
ataqueAleatorioEnemigo()
}

function ataqueAleatorioEnemigo() {
let ataqueAleatorio = aleatorio(1,3)

if (ataqueAleatorio == 1) {
    ataqueEnemigo = 'FUEGO'
} else if (ataqueAleatorio == 2) {
    ataqueEnemigo = 'AGUA'
} else {
    ataqueEnemigo = 'TIERRA'
}

combate()

}

function combate() {
let spanVidasJugador = document.getElementById(‘vidas-jugador’)
let spanVidasEnemigo = document.getElementById(‘vidas-enemigo’)

if(ataqueEnemigo == ataqueJugador) {
    crearMensaje("EMPATE")
} else if(ataqueJugador == 'FUEGO' && ataqueEnemigo == 'TIERRA') {
    crearMensaje("GANASTE")
    vidasEnemigo--
    spanVidasEnemigo.innerHTML = vidasEnemigo
} else if(ataqueJugador == 'AGUA' && ataqueEnemigo == 'FUEGO') {
    crearMensaje("GANASTE")
    vidasEnemigo--
    spanVidasEnemigo.innerHTML = vidasEnemigo
} else if(ataqueJugador == 'TIERRA' && ataqueEnemigo == 'AGUA') {
    crearMensaje("GANASTE")
    vidasEnemigo--
    spanVidasEnemigo.innerHTML = vidasEnemigo
} else {
    crearMensaje("PERDISTE")
    vidasJugador--
    spanVidasJugador.innerHTML = vidasJugador
}

revisarVidas()

}

function revisarVidas() {
if (vidasEnemigo == 0) {
crearMensajeFinal(“FELICITACIONES! Ganaste 😃”)
} else if (vidasJugador == 0) {
crearMensajeFinal(‘Lo siento, perdiste 😦’)
}
}

function crearMensaje(resultado) {
let sectionMensajes = document.getElementById(‘mensajes’)

let parrafo = document.createElement('p')
parrafo.innerHTML = 'Tu mascota atacó con ' + ataqueJugador + ', las mascota del enemigo atacó con ' + ataqueEnemigo + '- ' + resultado

sectionMensajes.appendChild(parrafo)

}

function crearMensajeFinal(resultadoFinal) {
let sectionMensajes = document.getElementById(‘mensajes’)

let parrafo = document.createElement('p')
parrafo.innerHTML = resultadoFinal

sectionMensajes.appendChild(parrafo)

let botonFuego = document.getElementById('boton-fuego')
botonFuego.disabled = true
let botonAgua = document.getElementById('boton-agua')
botonAgua.disabled = true
let botonTierra = document.getElementById('boton-tierra')
botonTierra.disabled = true

let sectionReiniciar = document.getElementById('reiniciar')
sectionReiniciar.style.display = 'block'

}

function reiniciarJuego() {
location.reload()
}

function aleatorio(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min)
}

window.addEventListener(‘load’, iniciarJuego)

<!DOCTYPE html>
<html>
<head>
<meta charset=“utf-8” />
<title>MOKEPON!</title>
<script src="./js/mokepon.js"></script>
<link rel=“stylesheet” href="./styles.css">
</head>
<body>
<h1 class=“titulo”>MOKEPON! 🔥💧🌱</h1>
<section id=“seleccionar-mascota”>
<h2>Elige tu mascota:</h2>
<label for=“hipodoge”>Hipodoge</label>
<input type=“radio” name=“mascota” id=“hipodoge” />
<label for=“capipepo”>Capipepo</label>
<input type=“radio” name=“mascota” id=“capipepo” />
<label for=“ratigueya”>Ratigueya</label>
<input type=“radio” name=“mascota” id=“ratigueya” />
<button id=“boton-mascota”>Seleccionar</button>
</section>
<section id=“seleccionar-ataque”>
<h2>Elige tu ataque:</h2>
<section id=“mensajes”>
</section>
<section id=“reiniciar”>
<button id=“boton-reiniciar”>Reiniciar</button>
</section>
<div>
<button id=“boton-fuego”>Fuego 🔥</button>
<button id=“boton-agua”>Agua 💧</button>
<button id=“boton-tierra”>Tierra 🌱</button>
</div>
<p>Tu mascota <span id=“mascota-jugador”></span> tiene <span id=“vidas-jugador”>3</span> vidas</p>
<p>La mascota <span id=“mascota-enemigo”></span> del enemigo tiene <span id=“vidas-enemigo”>3</span> vidas</p>
</section>
</body>
</html>

![]()

¿Cómo usar Flex Box en CSS?
Resultado de imagen para flex box en css
El modelo CSS Flexbox parte de la alineación horizontal, aunque también es posible organizar los elementos en una columna. Además, se puede invertir la dirección, de izquierda a derecha o de abajo a arriba. Para ello, se utiliza el comando flex-direction: row: de izquierda a derecha

Si lo quisieramos cambiar, podríamos poner justo abajo

flex-direction: column;

Esta dirección es muy importante para otros elementos o propiedades de los contenedores