Adonay Lizardo
Asi vamos con los nuevos personajes
Nicolas Gutierrez Orjuela
están muy bonitos los diseños de star wars
Rubén Cuello
Jajaja geniaaaaal! Subilo que quiero jugar :smile:
Las optimizaciones del código no solo tienen que hacerse en el código Javascript para mejorar la lógica de un programa. También puede aplicarse en el front-end para mejorar la experiencia de usuario.
Mejoras de experiencia de usuario
Tal vez sea la primera vez que escuches sobre UX, User eXperience o experiencia de usuario. La misma es una práctica de diseño que busca entender el comportamiento de los usuarios de un software y buscar optimizar el mismo para que sea ameno el uso de la aplicación.
Por ejemplo, en el videojuego que te encuentras desarrollando pueden ocurrir errores visuales que no son gratos para el jugador.
Como los mokepones tienen muchos ataques, la pantalla queda chica y se rompe el HTML.
Puedes solucionarlo fácilmente modificando los estilos CSS del botón de ataque y obtener el siguiente resultado.
.boton-de-ataque { background-color: #11468F; padding: 10px; box-sizing: border-box; border-radius: 20px; border-color: transparent; width: 80px; color: white; font-family: 'Poppins', sans-serif; }
Otro problema que tiene el videojuego en este punto es que permite seleccionar todas las veces que el jugador quiera, el mismo ataque. Esto puede causar que el jugador haga trampa o simplemente es un comportamiento que no queremos.
Bloquea el botón que el usuario seleccionó fácilmente con la propiedad del elemento botón llamada disabled.
function secuenciaAtaque() { botones.forEach((boton) => { boton.addEventListener('click', (e) => { if (e.target.textContent === '🔥') { // ... boton.disabled = true; } else if (e.target.textContent === '💧') { // ... boton.disabled = true; } else { // ... boton.disabled = true; } ataqueAleatorioEnemigo(); }) }) }
De esta forma, el usuario estará obligado a seleccionar los cinco ataques de su mokepon y a no repetirlos.
Si recorres tu videojuego, tal vez encuentres muchos otros puntos de mejora que puedes utilizar para practicar y aprender más. Si un amigo o familiar puede utilizar la aplicación, este puede recomendarte cómo mejorar la lógica del juego. Siempre es recomendable que otra persona prueba el software que uno mismo está programando para ver cosas que nosotros no podemos ver.
Felicitaciones por llegar hasta este punto del Curso Gratis de Programación Básica de Platzi. Ya tienes toda una aplicación funcionando para jugar con tu videojuego y optimizada con buenas prácticas de programación. A partir del siguiente módulo, comenzarás a desarrollar un mapa para que los mokepones pueda pasearse por una ciudad antes de iniciar un nuevo combate.
No dudes en continuar. ¡Nos vemos ahí!
Contribución creada por: Kevin Fiorentino (Platzi Contributor)
Adonay Lizardo
Asi vamos con los nuevos personajes
Nicolas Gutierrez Orjuela
están muy bonitos los diseños de star wars
Rubén Cuello
Jajaja geniaaaaal! Subilo que quiero jugar :smile:
Luis Carlos Zapata García
FRONTEND Y BACKEND EN PLATZI
Frontend
Backend
Rubén Ezenga Carelli
AME estas imagenes !! GRACIAS
Diego Alejandro Moreno Pedroza
SUper las infografías!, gracias
Felicidades jugador
Has finalizado la sección Optimización de código, descansa aquí.
Juan Carlos Espinoza Flores
Creo que en la segunda sección se ha podido hacer algo mejor con la lógica de perder vidas, y mejorar la experiencia de usuario.
Eluizer Amadeus De León de Leon
que bonito te quedo
Nicolas Umile
me encanta! nos podrías compartir tu código?
tiken .
Tuve que repetir varias veces estas últimas clases, pero al final hemos conseguido el reto 💪🏼
Diana López
super I like it
tiken .
Thanks 💃🏽
Sebastian Pacheco Lopez
pude hacerlo tomando los nombres de los ataques en el array, y usé el método splice para borrar ataques ya usados por el enemigo, en la consola se puede ver como por cada ataque lanzado se reduce el array de los ataques del enemigo en 1.
Steven Albornoz
Amigo me puedes explicar ? Exactamente que función hace el método splice ahí ? Yo sé que elimina 1 elemento del array pero no entiendo cómo hace para que exactamente quede el muñeco con sus 3 ataques que el pertenecen y los otros dos??
Edwin Romero
Gracias , con el splice implementado ya quedo listo .
Rubén Ernesto Aragón Gil
Abraham Misael Flores Castrejón
Excelente mi hermano! Me ayudó bastante tu aporte, aunque me gustaría más poder entenderle el porque de las cosas pero con tu aportación fue de gran valor.
Rubén Ernesto Aragón Gil
Poco a poco vas a ir entiendo, bro. Nomas no le rajes.
David Vaquiro Diaz
Me tomo varias horas pero lo logre :D cumplí el reto planteado por el profe Diego nnnice
Cuando el jugador selecciona el monstermon y el enemigoSelecionaMonster() se vera en pantalla la img .
y si el monstermon tiene ventaja de tipo se vera en el msm en pantalla otorgándole con ataque adicional de su tipo-especial
Diana López
se ve cool el juego
David Cáceres
Hola David, como haces para organizar 2 filas de 3? yo intente cambiarlo editando el flex pero solo se me baja a la fila de abajo los dos últimos que agregue quedándome 4 arriba y 2 abajo. Solo achicando la pantalla se me ponen 3 arriba y 3 abajo.
oscar solano
Pienso que Diego se salió del método con el que venían los anteriores instructores y no se si es el fin del curso pero lo hizo mas para expertos y aunque es normal tener tropiezos al programar nunca entendí por que y para que cambio la lógica con la que venia el código.
Juan Castro
ProfesorCuéntanos si hubo alguna parte que no entendiste tan bien para ayudarte, Oscar!
Marcos Zuriel Lebasi Brito Hernández
Así cambian los proyectos en la vida real, toca adaptarse a las necesidades sobre la marcha, sin embargo es válido lo que mencionas aunque creo que el proyecto estaba pensado así solo que al comienzo no nos dijeron cual sería el producto final para guardar el elemento sorpresa! saludos
Juan Muñiz
Fernando García
lo intente pero no me funciono
Giancarlo Javier de Fátima Franco Lleren
bien usada esa variable ataque, me estaba partiendo la cabeza pero me funciono usando esa variable extra gracias :)
David Vaquiro Diaz
las ultimas 4 clases de esta sección me volaron la cabeza que las repetir n números de veces xD.
Jonathan Rafael Petit Rojas
Excelente! es parte del proceso de aprendizaje! y es la ventaja de estos curso que a diferencia de un salon de clases, aqui si se puede repetir cuantas veces uno quiera.💪
Luis Castro
Andres Steven Galindo Satizabal
Me demore bastante en los detalles de los honguitos pero valió la pena 😃🍄💗
Eduardo Peña Ramos
¡Espectacular, de ahí a programar un Mario Bros! :D
Andres Steven Galindo Satizabal
Esa es la intención bro
Caterine Jaramillo
hola !! les comparto mi solución a los retos del profe Diego
N40 M10
Genial
Jonathan Rafael Petit Rojas
aparte de desactivar los botones, Otra forma de evitar que el usuario pueda elegir el mismo ataque dos veces es hacer desaparecer el boton con el (display = none) que aprendimos a usar en clases anteriores.
en la imagen ya no se ven los botonen porque fueron desacareciendo cada vez que daba click.
Luis Carlos Carrillo
Web:
N40 M10
Buen trabajo.
Luis Carlos Carrillo
Gracias!!✌🏼
Manuel Andres Blanco Clavijo
La verdad el juego me gustaba mas como estaba al principio y no con las modificaciones hechas hasta este punto, sobre todo porque cuando se seleccionaba un ataque aparecia inmediatamente el ataque del jugador y del enemigo, ahora toca esperar hasta que se selecionen los 5 ataques para ver como le fue tanto al jugador como al enemigo, ademas por ningun lado se le explica al jugador las reglas del juego, es decir, que el juego se gana por el número de victorias, eso le quita emocion y dinamismo…Que lastima, se tiro el jueguito😦
Omar Daniel Centeno
Creo que cada módulo ha ido agregando complejidad y nos ha hecho analizar nuestro código. Con estas herramientas puedes modificar el juego que has ido creando de la forma que más te guste, eso es lo maravilloso del curso.
Luis Castro
Jorge Alberto Flores Castillo
Lo que entiendo de esta sección de optimización de código, es que tomamos un proyecto de programación estructurada y lo migramos a un proyecto OOP, la transición se volvió engorrosa. Yo habría preferido que escribiéramos el juego desde cero con la perspectiva OOP
Estiven Parra
el hecho es que nos hubiéramos frustrado mas rápido y también nos hubiéramos perdido de algunas funciones o líneas de código importantes
Eduardo Peña Ramos
Opino igual a Estiven, OOP es un poco más avanzado. En mi humilde opinión, incluso cuando los profes resuelven bugs, es didáctico. Saludos.
Jonathan Rafael Petit Rojas
Asi me quedo despues de cambiar un poco la logica y de agregar las otras mascotas:
Cuando elijo mi mokepon, la mascota del enemigo se elige aleatoriamente y dependiendo de su tipo tambien tendra un ataque mas de ese elemento. y luego empieza el combate (mas estrategico que de suerte):
Para que el usuario no pueda darle click al mismo ataque dos veces los botones van desapareciendo cada que se eligen, y batalla a batalla se va llevando el conteo y te avisa si ganaste o perdiste esa batalla.(los ataques del oponente se eligen aleatoriamente sin repetirse).
Alexis Torres
Hola, como haces para organizar 2 filas de mokepones en la sección de "Choose your pet"?
Miki Rodrigo Tucto Leon
Avner Antolinez
Saludos. Esta vez no le invertí mucho tiempo al UI, aparte de detalles pequeños. Lo que si hice fue cambiar la lógica de algunas funciones para evitar validaciones innecesarias. Además entre la primera lógica (haciendo un combate a la vez) y la de secuencias, a mí personalmente me gusta más la primera. Sin embargo le puse la opción para que el usuario pueda escoger en qué modo desea jugar. Mokepon en GitHub
Live view
Eduardo Peña Ramos
Genial, lo probé y funciona perfecto. ¡Saludos, Avner! :D
Jeremias Cordero
Hola 💚 ¿Soy el único que siempre pierde en su propio juego??
Luis GR
Jajaja, no!!; de hecho yo también!!!
Josué Benjamín Dionisio Pacheco
Me pasó exactamente lo mismo y le estuve dando vueltas a esto, resulta que yo estaba condicionando las victorias según su índice, y era un poco confuso, al final repasando la clase, me di cuenta que el profesor las condicionaba por ataques, que es lo más óptimo y se solucionó el problema y por primera vez, gané.
Saludos amigo, espero que después de 2 años me veas ya como un niñito jugando a desarrollar.
He podido meter a las 6 mascotas:
Para poder tener las 6 mascotas centradas y divididas, quite flex y le puse un grip en 2 fracciones.
.tarjetas, .tarjetas-ataques { display: grid; grid-template-columns: 1fr 1fr; justify-items: center; column-gap: 15px; row-gap: 15px; }
Agregué dos ataques más, viento con Tucapalma:
Les comparto mi avance en Github: https://github.com/Torofms37/Juego-Web.git
Sé que falta mejorar diseño, pero eso luego lo hago al terminar todas las clases.
La manera en la que conseguí que las elecciones fueran aleatorias y no repetidas en el mismo indice fue el siguiente.
function ataqueAleatorioEnemigo() { let ataqueAleatorio = aleatorio(0, ataquesMokeponEnemigo.length - 1); let ataque = ataquesMokeponEnemigo[ataqueAleatorio].nombre; ataquesMokeponEnemigo.splice(ataqueAleatorio, 1); if (ataque == "🔥") { ataqueEnemigo.push("FUEGO"); } else if (ataque == "💧") { ataqueEnemigo.push("AGUA"); } else { ataqueEnemigo.push("TIERRA"); } console.log(ataqueEnemigo); inicarPelea(); }
Asigno el valor del elemento del array, luego lo elimino y despúes lo valido. De esta manera no se repite. Espero que les sirva :)
Alexis Torres con:
.tarjetas{ display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; }
no se si Jhonatan lo hizo así, pero yo lo hice así