Luego de que el usuario de tu videojuego haya seleccionado un mokepon para jugar, la lógica interna de la aplicación requiere capturar los ataques del personaje y renderizarlos hacia el HTML para que el usuario pueda interactuar con los botones.
Renderizado de los ataques
Comienza creando un <div> en el HTML y seleccionando el mismo desde el Javascript donde renderizaremos cada botón de ataque del mokepon seleccionado.
Luego de haber capturado los ataques del mokepón seleccionado en la función extraerAtaques(), envía esta información a una nueva función llamada mostrarAtaques() donde crearemos el código HTML.
functionmostrarAtaques(ataques){ ataques.forEach((ataque)=>{ ataquesMokepon =` <button id=${ataque.id} class="boton-de-ataque">
${ataque.nombre} </button>
`;// Renderizamos cada ataque del personaje contenedorAtaques.innerHTML+= ataquesMokepon;});// Seleccionar botones luego de crearlos botonFuego =document.getElementById('boton-fuego'); botonAgua =document.getElementById('boton-agua'); botonTierra =document.getElementById('boton-tierra');// Agregar evento a los botones botonFuego.addEventListener('click', ataqueFuego); botonAgua.addEventListener('click', ataqueAgua); botonTierra.addEventListener('click', ataqueTierra);}
Al crear el código nuevo código HTML para cada botón de los ataques del mokepon, tienes que tener en cuenta que debes seleccionar los mismos con document.getElementById() y posteriormente agregarle el evento al hacer clic con addEventListener().
Asegúrate también de borrar el código que tu aplicación ya no necesite, dado que ahora estamos creando código HTML dinámicamente. A diferencia de crear el código de forma estática, es importante evaluar el momento de captura de los elementos HTML y su posterior asignación de eventos.
Asi es como va aumentando la dificultad del curso:
Freddy: dificultad nivel 1
Juan: dificultad nivel 3
Estefany: dificultad nivel 5
Diego: dificultad nivel 1847
pero no me rendiré..
Nuevo Curso Gratis de Programación Básica
Es el Dark Souls de los cursos básicos de programación
Pienso que se perdió la diversión que contagiaban los primeros instructores
Capítulo UNO del curso de programación básica:
.
.
.
Capitulo CINCUENTA Y SEIS del curso de programación básica:
JAJAJ identificado al 100%
Jajajajajajaja
Les soy sincero, entendi todo lo que hizo, incluso me salio al pie del cañon!, peroooooo.. si tengo q hacerlo por propia logica mia en alguna actividad totalmente diferente, dudo poder lograrlo!
y la verdad me ofusca de sobre manera saber q no voy a poder hacerlo solo!
Me pasa lo mismo. Pero lo lograremos con practica, lo que yo pienso hacer es inventar otro jueguito e ir haciendo parte por parte el código para saber a fondo como me van funcionando las cosas. Estas clases servirán de apuntes.
estoy igual, seguro al tiempo le cogemos el tiro
el nivel de comprensión está aumentando exponencialmente para tratarse de un curso básico D: no me rendiré!!
es una actividad carreandose desde hace 40 clases, creo que si se exedieron con eso
Pense que era el unico que pensaba asi
Es verdad cuando dicen que la programación es frustrante, pasé tres horas buscando un error que simplemente era un espacio en blanco que no debía estar.
aquí estoy llorando, pero no me rendí.
No llores, ánimo.
a todos nos pasa, pero siempre hay que seguir 💪💪👍🏻👍🏻
XD
Ja, ja, ja yo después de cada clase con el profe Diego.
Les dejo esto para que no les pase lo mismo que a mi....
Al momento de comparar los botones con el texto del botón no me coincidían, el problema era que tenia un espacio en blanco al inicio del texto de identificación de cada botón.....
la corrección es súper fácil, pero me rompió la cabeza encantararla jejeje
simplemente erra eliminar el espacio, para que al momento de comparar el click del botón con la palabra Agua, Fuego o tierra Consideran en el if(e.target.textContent == Água')
en el: e.target.textContent cuando esta malo me salía
" Agua" al corregirlo "Agua" sin el espacio en blanco
Lo mismo me sucedió pero en mi caso el problema estaba en que en la parte del textContent se agregaba un espacio de cada lado del emoji, lo cual despúes me percaté y al pegarlo tal cual funcionó.
Tenía justo ese error, me salvaste de horas de buscar la causa jajaja mil gracias
Ya en este punto el curso se pone mas intenso y complejo, sin embargo, es muy satisfactorio notar que estamos aprendiendo y que le damos vida al juego de diferentes maneras.
Tal cual, esta clase ya me costo mas entender lo que hacia pero creo que luego de revisar tranquilo el código y rever la clase todo va a quedar más claro. Intentar explicárselo a alguien mas también puede ayudar muchísimo.
si pero puede ser agobiante para algunos 😥
Por si al ustedes buscar la propiedad textContent en el console no les aparece, como fue mi caso, tambien pueden buscar la propiedad innerText, y reemplazarla, a mi no me aparecía textContent, y al querer usarla me daba error, entonces usé innerText y la función funciona :v jaja. 
me salvaste papu, si me lo pregunte, si no me sale entonces como le agrego el texto sin la opcion, la pregunta es.. en algunos navegadores funciona y en otros no?
Una 🍺 para el caballero por favor, jajaja estaba a punto de volver a escribir toda la linea de código antes de volverme loco, gracias.
Qué se hace en esta clase:
Se guardan en un ==array== los 5 botones creados (recordemos que los botónes serán distintos de acuerdo al mokepón seleccionado)
A través de botones = document.querySelectorAll('.b-ataque')
Se crea una función que va a iterar (recorrer) cada uno de los botones guardados en el ==array== y les agregará un ==escuhador de eventos==
Para la iteración se usa el método forEach del array botones.forEach((boton) => { }
Para que el escuchador de eventos sea dínamico se hace una validación dentro del mismo usando boton.addEventListener('click', (e) => { if (Condición) {código} })
Se inyecta en una array nuevo el orden de los ataques seleccionados
A través de ataqueJugador.push('ATAQUE_SELECCIONADO')
Una pregunta, no me esta aceptando el valor e, no entiendo porque, realizo un console.log(botones) despues y dentro del .forEach y si me da la razón arroja los elementos que ahí se encuentran.
Gracias
Jorge Damián: Pon el código.
A todos los que les de el error del ataque que se queda pegado en TIERRA. Esto se debe a haber dejado un espacio en blanco al momento de crear el botón, despues de la variable nombre. Entre ${ataque.nombre}</button>, no debe ir ningún espacio. Entonces cuando hace el IF jamás va a coincidir FUEGO o AGUA, porque estas comparando '🔥' con '🔥 '. Siempre va ir a parar al "else", es decir a la TIERRA. Hay lugares donde dejar espacios no tiene ninguna importancia, pero otros donde un simple espacio te puede romper todo el código. Saludos !
Me salvaste, estaba que me arrancaba el cabello jajaja gracias!!!
Muchas gracias amigo, ya llevaba una hora revisando el codigo buscando el espacio que estaba ocacionando dicho error.
Por si los ocupas:
🔥
💧
🌱
usen la tecla:
windows + .
y en Mac?
Estube apunto de perder los pelos jajajaaj, por alguna razon al momento de validar los ataques que se guardaban en el array, al darle al primer boton de agua (de hipodoge) en el console log me marcaba que elegi tierra jajaja, resulta que al momento de declarar los ataques de cada mokepon, por accidente puse 2 espacios entre caracteres jajaja, siempre tengan cuidado, los espacios tambien cuentan 👀👀

Yo casi pierdo la cabeza cuando estaba agragando los botones, habia puesto el código así:
Con espacio a los dos lados, a lo último me toco ir de nuevo a ver el valor del textContent de e en la consola para darme cuenta
A mí me funciono cerrar el botón en una sola línea.
Excelente curso, a los que dicen que se pasaron un poco, pues tengo una opinión, es un curso de introducción y están tratando de crear un juego desde cero y lo mas sencillo, solo puedo decir que es sublime el trabajo que están haciendo y créanme que esta muy resumido, normalmente meter tantos temas conlleva mucho mas tiempo y eso le da mucho merito al curso.
y pues si, es difícil de seguir para alguien que no tiene experiencia previa pero también tengamos en cuenta que para alguien que viene de cero es una mina de oro conocer aunque sea de forma resumida tantos temas, es una introducción larga pero funciona en ir a maquetado, estilizado, interactividad y creo que le implementan hasta backend, el curso esta mas que perfecto
solo les recuerdo que el aprender algo no es una carrera que el primero que llegue es el ganador, ES UNA MARATÓN, donde todo el que termine la carrera es un ganador, si es difícil, respiren, jueguen un rato y luego continúen, disfruten del curso, que es excelente y pues no vayan con prisa, vayan con calidad.
Mucha suerte a todos!!
A mí personalmente me desconcentra mucho, que cometa tantos errores de digitación, me distrae, deberían permitir a cada profesor llevar su teclado propio o usar su propio computador. No sé porque se enreda tanto al escribir y la explicación me toco repetir varios videos para entender :(
el profe hace los errores a propósito ya que esos mismos errores nos puede pasar y el nos enseña a resolverlo siempre mirando en la consola
Pero es que el error es garrafalmente obvio si estás prestando atención, las clases donde se muestra el código hace un zoom exagerado y así es difícil no notar un error, la realidad es que uno escribe con un tamaño de letra mucho más pequeño y por lo tanto es más difícil percibir estos errores de escritura, en proyectos pequeños es fácil encontrar el error pero cuando el código crece uno se vuelve maś propenso a cometer typos, en lo personal no me molesta que cometa esos errores a propósito porque uno siempre se va a equivocar en algún momento y estará obligado a revisar el código hasta encontrar el error, pero sin tener la facilidad de tener un tamaño de letra enorme porque como yo trabajo sin zoom me cuesta más ver cuando cometo errores de escritura.
Creo que hubiese sido interesante que, antes de ponerse a hacer todas las modificaciones en el código, hubiesen explicado a que se quería llegar concretamente. Es decir, mostrar un bosquejo de como se quiere que sea el nuevo funcionamiento y aspecto del juego. Porque así no entendemos por qué se hacen las cosas hasta que vemos el resultado final, y es bastante confuso.
Completamente de acuerdo, pienso que a esta altura el curso se ha vuelto bastante confuso para los que no sabemos tanto de programacion. De todas formas se agradece que el curso sea gratis, es bastante completo y hay buenos profesores, pero sin duda que podria ser mejor, hay conceptos e ideas que no quedan del todo claro, y se podria explicar usando mas pedagogia
Pienso lo mismo, antes de hacer algo es importante saber el resultado que esperamos
Cada vez que Diego agrega una nueva linea o concepto. Esta clase estuvo potente.
Hola comunidad, tengo un problema con la (e), no me funciona el console.log(e) . He revisado y copiado incluso el código del profe y sigue sin darme, lo raro es que en la consola no me muestra ningún error. Quien me puede ayudar por favor?
function secuenciaAtaque(){
botones.forEach((boton) => {
boton.addEventListener('click', (e) => {
if(e.target.textContent === "🔥"){
ataqueJugador.push("Fuego")
console.log(ataqueJugador)
boton.style.background = "#000000"
} else if(e.target.textContent === "🌊"){
ataqueJugador.push("Agua")
console.log(ataqueJugador)
boton.style.background = "#000000"
} else {
ataqueJugador.push("Tierra")
console.log(ataqueJugador)
boton.style.background = "#000000"
}
console.log(e)
})
})
}
A mi me está pasando lo mismo, y todavía no encontré la forma de arreglarlo :(
Lo logre, en mi caso el código no reconoció la e como parámetro del evento así que puse "Event", y de esta forma si lo reconoció.
si asi es el básico, como será el avanzado. no se rindan...
que sad
El profe Jorge utiliza mucho la palabra parse y significa:
"Parsing" significa analizar y convertir un programa en un formato interno que un entorno de ejecución pueda realmente ejecutar, por ejemplo el motor JavaScript dentro de los navegadores.