Optimización y Corrección de Errores en Juegos Web con JavaScript
Resumen
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.
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.
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.
Jajaja geniaaaaal! Subilo que quiero jugar :smile:
FRONTEND Y BACKEND EN PLATZI
Frontend
Backend
AME estas imagenes !! GRACIAS
SUper las infografías!, gracias
Felicidades jugador
Has finalizado la sección Optimización de código, descansa aquí.
jajaajaj brutal esa referencia
Gracias.
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.
que bonito te quedo
me encanta! nos podrías compartir tu código?
Tuve que repetir varias veces estas últimas clases, pero al final hemos conseguido el reto 💪🏼
super I like it
Thanks 💃🏽
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.
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??
Gracias , con el splice implementado ya quedo listo .
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.
Sé que falta mejorar diseño, pero eso luego lo hago al terminar todas las clases.
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.
Poco a poco vas a ir entiendo, bro. Nomas no le rajes.
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
el combate sin que el enemigo repita ataques
se ve cool el juego
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.
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.
Cuéntanos si hubo alguna parte que no entendiste tan bien para ayudarte, Oscar!
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
La manera en la que conseguí que las elecciones fueran aleatorias y no repetidas en el mismo indice fue el siguiente.
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 :)
lo intente pero no me funciono
bien usada esa variable ataque, me estaba partiendo la cabeza pero me funciono usando esa variable extra gracias :)
las ultimas 4 clases de esta sección me volaron la cabeza que las repetir n números de veces xD.
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.💪
Me demore bastante en los detalles de los honguitos pero valió la pena 😃🍄💗
¡Espectacular, de ahí a programar un Mario Bros! :D
Esa es la intención bro
hola !!
les comparto mi solución a los retos del profe Diego
Genial
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.
Web:
Móvil:
Buen trabajo.
Gracias!!✌🏼
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😦
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.
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
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
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.
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).
Una vez se terminan los ataques te informa el resultado final y si ganaste o perdiste o si fue empate.
Ahora Sigamos Aprendiendo!🦾🧠💪
Hola, como haces para organizar 2 filas de mokepones en la sección de "Choose your pet"?
no se si Jhonatan lo hizo así, pero yo lo hice así
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
Genial, lo probé y funciona perfecto. ¡Saludos, Avner! :D
Hola 💚
¿Soy el único que siempre pierde en su propio juego??
Jajaja, no!!; de hecho yo también!!!
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.