Hasta este punto del desarrollo de tu primer software, tienes un videojuego funcional, pero aún con mejoras y optimizaciones por delante que puedes aplicar con todos los nuevos conceptos aprendidos.
Optimización de los ataques
Cada mokepon tiene sus propios ataques dependiendo el tipo. En este momento, puedes observar en el HTML que tenemos hardcodeado tres ataques, por lo tanto, todos los mokepones tendrán los mismos.
Ya sabes que esto no es para nada recomendable y hay que solucionarlo. Tómate un tiempo para pensar en tu propia solución y a continuación, veremos cómo puedes lograrlo.
La clase Mokepon tiene un atributo llamado ataques que guarda un array de ataques de cada personaje. Vamos a utilizar esta información para crear el código HTML dinámicamente.
Luego de que el usuario de la aplicación seleccionara un mokepon, enviamos el mokepon seleccionado a una nueva función llamada extraerAtaques().
Aquí, iteraremos con un for el arreglo de todos los mokepones en búsqueda del mokepon seleccionado para poder tomar sus ataques y guardarlos en una nueva variable que posteriormente utilizaremos para crear los ataques en el código HTML. Utilizamos un if para poder buscar y validar el nombre del personaje seleccionado.
functionextraerAtaques(mascotaJugador){let ataques;for(let i =0; i < mokepones.length; i++){if(mascotaJugador === mokepones[i].nombre){ ataques = mokepones[i].ataques;}}console.log(ataques);}
Este arreglo de ataques lo enviaremos a otra nueva función para renderizar el HTML y que el usuario pueda jugar con los ataques propios del mokepon. En la siguiente clase, completaremos este flujo para tener casi terminado la lógica de los ataques de los personajes.
Recuerden que ninguna es mejor o peor :D solo son maneras diferentes de llegar al mismo resulto y como dice el gran De Granda:
Si sirve, esta bien!
Muy bien jugado
Está genial esta opción, debe funcionar.
Solo me da curiosidad cuál método es más eficiente cuando hay muchos elementos.
Saludos! :)
Fue muy dificil para mí entender esta clase, pero sigo todo al pie de la letra, y en próximos cursos espero profundizar estos conceptos.
Es el unico incombeniente con este curso, se estendio demasiado una actividad, como es un mismo proyecto que se lleva carreando deade hace 40 clases, entiendo que a los que vinieron a aprender programacion batallen mucho, esto fue lo que fallo en este curso. Pero si llegaste a este punto, sigue esforzandote amigo, porque creeme que lo que se esta viendo en este momento con el profesor Diego ya es programacion de alto nivel. Un saludo 🖐🖐
estoy igual, decidi repetir toda la parte de optimizacion de codigo
Que mareada me pego esta clase
ufff jajajaj :( ..depresion!! jaja broma pero si que dificil se me hizo esta clase!!!!! entendi la mitad , de hecho voy a verla por 2da vez
tuve que bajarle la velocidad y repetirlo varias veces Xd
En esta clase se vio lo siguiente:
Cómo guardar en una nueva variable los ataques que tenga el mokepón que el jugador selecciona. Para ello:
Se compara el nombre del mokepón seleccionado por el juagador con la propiedad nombre de cada mokepón del array ==mokepones==, usando una iteración
Una vez coinciden, usando una validación (==if==), se guradan en una variable los ataques de ese moképon
super util a modo de resumen
Gracias por el resumen.
Creo que si se hubiese separado en 2 cursos, la primera parte por parte de Freddy, Juan y Estefany, como programacion basica, y la segunda parte con Diego, Salas y Diana, como programacion avanzada quedaria mejor, hasta para mi que se moderadamente de programacion me agobia el traer este proyecto ya por casi 2 o 3 semanas en lo que realizo el programa, documento todo, resuelvo mis dudas etc.
completamente de acuerdo, es mi primer acercamiento a la programacion y con optimizacion al codigo he tenido dificualtad
El curso es Gratuito , Buena calidad y aun asi se quejan! :/
Como decía mi maestro de programación: "Bueno, son 3000 líneas pero ya suma".
AUXILIO siempre escribo el código de lo más largo :'(.
Te pasaste!! que buen estilo
Te quedo muy lindoooo!!! El mío no se ve así y ahora ya no responde !!! .
Te felicito , de verdad esta muy bueno!
terriblemente complicado ya estoy totalmente superado, sigo por terminar el curso pero por mi ya abandonaría
No te rindas !
Paciencia.
No se trata de pasar el curso, si no de aprender.
el reto antes de ver el video:
logre sacar los 5 botones para los 5 ataques pero solo funciona un boton del los ataques repetidos(en este caso Agua), creo que es por el id, no puede haber mas de un ID igual en el Html
En esta clase Diego nos enseña otro método de usar los ciclos con for .
El curso se me esta haciendo bastante largo, pero porque es un nivel que me pone a sufrir. Ya llevo varios días en esta clase y sigo intentando, no importa si me demoro lo importante es nunca parar 🦾. ¡No se rindan compañeros y compañeras!
Diego: Eso también lo sabes hacer..
Yo:
jajajajaj
vengo un par de años atrasado, y lit cuando el profe dio el reto de intentarlo genuinamente lo intenté y cuando le di play para ver su solución me quede así de wtf 😂😂😂😂
Mi solucion:
Primero defini la variable mascotaJugador que almacena el id de la mascota seleccionada
Luego defini un arreglo con los ataques, el cual va a contener los ataques de la mascota seleccionada por el jugador y luego se generan los botones dependiendo de la mascota y sus ataques
que friega me acaba de comodar esta clase, voy a tener que repetirla varias veces
Si les está costando trabajo entender esta clase o algunas otras (como me pasa a mi), les recomiendo mucho que visiten esta página y estudien los cursos de introducción y fundamentos (son gratis, por cierto):
A mi me ha servido mucho, espero les sirva a ustedes también!
Me rompi la cabeza intentando poner los botones 🥴
El profesor al momento de comparar los valores en el condicional if [min 8:34], utiliza tres símbolos de igual ("===") y antes hemos usado solo dos.
La diferencia es que cuando se usan solo dos iguales ("==") estamos comparando solo los valores, mientras que cuando usamos tres estamos comparando los valores y también los tipos de datos.
Me emociona mucho saber que voy a terminar este curso habiendo visto tanto Front-end como back-end, node.js, etc etc.
Por lo que tengo entendido este el mínimo viable como para ser desarrollador Full-stack, o no?
Dependiendo de en que tecnolologías te quieras especializar agregaría a la misma GIt y Git Hub para trabajar colaborativamente con otros developers. De hecho hay un curso con las primeras clases gratuitas. 👏
Entiendo, gracias por tu aporte!
Así lo resolví, antes de seguir con la clase: creé la función de botonesDeAtaque(mascota), la cual le paso por parámetro una mascota, en donde se crean los botones y se inyectan en HTML (en el src de la imagen, ataque.elemento son los íconos que utilizo para representar los ataques).
Luego es invocada cuando se chequea la mascota seleccionada, pasándole por parámetro el nombre del objeto que se necesite para el caso.
(En el bloque de chequeo, la línea que contiene el appendChild con la imagen de algún mokepon es para las imágenes de la caja de VS.)
Así va quedando, ya luego iré reacomodando con CSS:
PREGUNTA: es recomendable invocar una función una sola vez en un bloque de código?
Siempre me pasa que utilizo una función varias veces, como se ve en la segunda captura que compartí, donde reutilizo botonesDeAtaque() con la diferencia que cambia su parámetro. (Siempre veo en las clases que las invocan una vez)
Hay muchos comentarios de gente que comenta que les esta costando o que sienten que no están entendiendo del todo.
Yo lo que hago es cada vez que algo no me cierra del todo o siento que podría entenderlo mejor de otra forma lo que hago es buscar por otros medios.
Generalmente utilizo el sitio https://developer.mozilla.org/es/ pero pueden buscar en otros lugares, es muy importante saber que es lo que hacemos y el porque, también experimentar cuanto podamos para que todo quede interiorizado.
Recuerden no quedarse solo con lo de las clases, mientras mas nos informemos y aprendamos mejores seremos.
Espero que a alguien le sirva mi forma de seguir el curso y mucha suerte a todos!!
yo lo que hare es apenas termine este curso voy a buscar otros cursos en youtube para poner en practica todo lo que vi y haci entenderlo mejor y usarla como base para futuros proyectos
Se me ocurrio una solucion muy distinta a la del profesor, y con una sola linea de codigo, pero usando un metodo que aun no hemos topado, el metodo "findindex() " esto para buscar el indice del array de mokepones que corresponde a la instancia del objeto de la mascota que seleccionamos.
En vez de crear esas funciones que creo el profe junto con el ciclo for, puse:
Con eso hasta se pude cargar los botones en el HTML
Me encantan tus clases Diego, en esta clase, como crítica constructiva le recomiendo al equipo de platzi hacer mas visual la explicación del loop for, esto creo que ayudaría mucho a algunos compañeros a comprenderlo de mejor manera. Es lo que yo hago también para comprenderlo mejor, lo escribo en un cuaderno y con marcadores resaltadores coloreo todo lo que es igual del mismo color, hago letreros, notas y señalamientos. A mis compañeros les recomiendo mucho esta técnica, también a veces una explicación no es mala pero la lógica de nuestros cerebros funciona diferente. Repitan la clase cuanto sea necesario.
si escribo
console.log(ataques)
si me sale la mascota de mi enemigo.
pero si ambos codigos:
console.log(ataques)
mostrarAtaques(ataques)
o solo:
mostrarAtaques(ataques) No me muestra la mascota de mi enemigo.
Hola Alicia, lograste resolver tu inquietud? de ser así me puedes ayudar?