¿Cómo seleccionar adecuadamente los ataques en tu juego?
Elegir los ataques correctamente y ligar eventos a esos ataques es crucial para enriquecer la experiencia de usuario en un juego. Para implementar esta funcionalidad, comenzamos identificando los elementos HTML necesarios, como botones para diferentes tipos de ataques (fuego, agua y tierra), y utilizando el addEventListener para escuchar clics y activar funciones específicas.
¿Qué es el addEventListener y cómo se utiliza?
El addEventListener es una herramienta fundamental en JavaScript que se utiliza para vincular eventos a elementos HTML. Cuando usamos esta función, podemos desencadenar acciones específicas cuando el usuario realiza una interacción, como un clic en un botón.
Botón de fuego: Clic implicaría llamar a una función llamada ataqueFuego().
Botón de agua: Clic llamaría a la función ataqueAgua().
Botón de tierra: Clic activaría la función ataqueTierra().
Estas funciones estarán encargadas de cambiar el estado de la variable global ataqueJugador, asignando el valor correspondiente al ataque seleccionado, como "fuego", "agua", o "tierra".
¿Qué son las variables globales y por qué son útiles?
Las variables globales son aquellas que se declaran fuera de cualquier función, lo cual permite que cualquier función en el programa pueda acceder y modificar su valor. En nuestro caso, creamos la variable global ataqueJugador para almacenar el tipo de ataque seleccionado por el usuario.
let ataqueJugador;functionataqueFuego(){ ataqueJugador ='FUEGO';alert(ataqueJugador);}functionataqueAgua(){ ataqueJugador ='AGUA';alert(ataqueJugador);}functionataqueTierra(){ ataqueJugador ='TIERRA';alert(ataqueJugador);}
Con esta lógica, independientemente de cómo evolucione nuestro juego, podemos estar seguros de que todas las funciones tendrán acceso al ataqueJugador para determinar cómo responderá el enemigo o cómo se mostrará el ataque en la interfaz.
¿Dónde es mejor colocar la lógica de los eventos?
La elección del lugar correcto en tu código para implementar la lógica de los eventos puede influir significativamente en la estructura y limpieza del código. Aquí, se ha decidido incluir las asignaciones de eventos dentro de la función iniciarJuego(), donde ya se está realizando la lógica para la selección de la mascota del jugador. Este enfoque permite mantener una organización sistemática y cohesiva.
Aprovechando las funciones en el código
Después de configurar los eventos y las variables, puedes utilizar las funciones para llevar a cabo acciones adicionales, como mostrar el ataque seleccionado al jugador o compararlo con el ataque del enemigo. Aunque en este ejemplo inicial se usa un alert, podrías también manipular el DOM para ofrecer un feedback visual mucho más inmersivo.
Próximos pasos y consejos prácticos
Una vez que los jugadores pueden seleccionar ataques, es vital pensar en el feedback que recibirán después. Considera implementar mensajes o animaciones que den vida a los ataques y los impactos que tengan. También podrías desarrollar una lógica de comparación para determinar si los ataques reúnen las condiciones ganadoras, empatadas o perdedoras contra el enemigo.
No dudes en seguir experimentando y ajustando tu código. Cada pequeño ajuste podría mejorar tu juego y llevarlo al siguiente nivel. ¡Sigue programando y deja que tu creatividad marque el camino!
El método addEventlistener, es un escuchador que indica al navegador que este atento a la interacción del usuario. La ventaja es que se escribe totalmente en el JS, sin necesidad de tocar el HTML.
estaba muy tranquilo yo por el minuto 2 y vi este comentario, no puede esperar asi que fuy al minuto 8:14 parece que dise poton pero es por la velocidad de reproduccion del video xD si lo pones a 1x se escucha perfectamente que es boton
:0
Creemos nuestro propio camino 🛣️
Como consejo, a todos, en la medida de lo posible, empiecen a personalizar el proyecto y agregarle/quitarle cosas con respecto a lo visto en clase según sus gustos. De esta forma, la dificultad irá aumentando mucho pero aprenderemos mucho más.
Como ejemplo, les dejaré un gif de cómo lo estoy llevando hasta el momento (no es para que lo hagan literal como yo, sino para que incluso lo hagan mejor o más acoplado a su antojo).
Mi enfoque es diferente, para ser más congruente, cada Mokepon tiene un set de 3 movimientos, depende de la naturaleza o tipo. Un ataque, una defensa y un movimiento de recuperación de salud.
¡Nunca paren de aprender! 💚
E S P E C T A C U L A R
Excelente! yo le esto poniendo un poquito de css y ya lo tengo en github
variables locales, se crean ++dentro++ de un método y solo se podrán usar dentro de ese. (solo las puede usar quien la creó)
variables globales, se crean ++fuera++ de cualquier método, y las pueden usar todos. (las pueden usar cualquier método)
esa no se me olvidara jamas! gracias
A veces me cuesta razonar los ejercicios 🤔
También, no sé encontrar las lógicas… realmente espero que con el tiempo y práctica, lleguen.
Recomiendo realizar ejercicios de libros y de la web, evaluarlos desde:
Basico
Intermedio
Dificil
Legendario
Modo Leyenda
Only Gods reach these realms
Modo God Killers
La "Unidad Absoluta"
Proyecto con un poco de CSS
Re bonito!.
impresionaste!! (me gusta en que envés de que escribiste mokepon escribiste kikiplay XDDD :) :) :))
Imagino por algo debe estar poniendo la funcion aparte. Ya lo veremos...por mientras mi codigo esta asi :)
¿Por qué solo declaras variables y no estás añadiendo las funciones?
Esta es una forma diferente, para no tener que escribir tantas funciones ALERT
let ataquejugador
// Función para activar los botones del DOMwindow.addEventListener('load',functioniniciarJuego(){//Activar boton de seleccionlet botonSeleccionJugador1 =document.getElementById('boton-seleccion-jugador1') botonSeleccionJugador1.addEventListener('click', confirmarSeleccionJugador) botonSeleccionJugador1.addEventListener('click', seleccionAtaqueJugador1)})// Función para elegir el ataque del jugadorfunctionseleccionAtaqueJugador1(){let botonTierra =document.getElementById('boton-tierra')let botonFuego =document.getElementById('boton-fuego')let botonAgua =document.getElementById('boton-agua')let botonTierraFuego =document.getElementById('boton-tierraFuego')let botonTierraAgua =document.getElementById('boton-tierraAgua')let botonAguaFuego =document.getElementById('boton-aguaFuego') botonTierra.onclick=functionataqueTierra(){ ataquejugador ='TIERRA'confirmarAtaqueJugador()} botonFuego.onclick=functionataquFuego(){ ataquejugador ='FUEGO'confirmarAtaqueJugador()} botonAgua.onclick=functionataqueAgua(){ ataquejugador ='AGUA'confirmarAtaqueJugador()} botonTierraFuego.onclick=functionataqueTierraFuego(){ ataquejugador ='TIERRA-FUEGO'confirmarAtaqueJugador()} botonTierraAgua.onclick=functionataqueTierraAgua(){ ataquejugador ='TIERRA-AGUA'confirmarAtaqueJugador()} botonAguaFuego.onclick=functionataqueAguaFuego(){ ataquejugador ='AGUA-FUEGO'confirmarAtaqueJugador()}}
Veo que tu código es diferente del de la clase, ¿Qué es eso de .onclick y porque la función del ataque se le asigna en lugar de tener la función por separado? Si pudieras explicarme te agradecería mucho!!!
Amigo es un curso basico, le agregas otras cosas diferentes a la de la clase por lo que puedes confundir a otros estudiantes
el audio esta bajito en varias clases de esta sección 😕
pero esta buenas las clases 7w7 pero particularmente esta clase esta mas bajo el vol
Eso lei en comentarios de clases pasadas pero afortunadamente ya le arreglaron el adio :D
Están geniales las clases, muy prácticas!!!
no entendi
Espero poder explicarme bien.
.
Cuando comenzamos con el código de JS (JavaScript) cuando queríamos seleccionar una mascota le dábamos clic al botón de seleccionar en dicha sección, sin embargo no hacia nada el botón, por el contrario nos mandaba un error que nos indicaba que dicho botón no existía, eso se debe a que al momento de cargar el archivo JS el documento HTML aun no termina de cargar (eso entendí yo) y por lo tanto el JS no logra ubicar el botón seleccionar del HTML, por lo que si nos vamos al final del archivo JS tenemos un evento que éste se ejecutará solo cuandoel HTMl se haya cargado por completo y así nuestro JS peda encontrar ese botón:
window.addEventListener("load", iniciarJuego)
Este evento lo que hace es que cuando se carga el documento HTML y todos sus componentes ejecuta la función llamada «iniciarJuego»
functioniniciarJuego(){let botonMascotaJugador =document.getElementById('boton-mascota')// Obtiene a través del ID el botón seleccionar botonMascotaJugador.addEventListener("click", seleccionarMascotaJugador)// Inicia el evento de escuchar el clic del botonlet 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)}
Si nos fijamos la primera linea de la función se encarga de obtener del HTML el ID del botón y se lo asigna a una variable llamada «botonMascotaJugador» para que podamos usarla dentro del JS
let botonMascotaJugador =document.getElementById('boton-mascota')
.
Posteriormente la segunda linea lo que hace es que inicia un evento para permanecer a la espera de que el usuario haga clic sobre ese botón de seleccionar, y una vez que se detecta un clic en ese botón ejecuta la función de seleccionarMascotaJugador que nos permitirá detectar que mascota seleccionamos nosotros y posteriormente eligirá la mascota del enemigo de manera aleatoria.
Ahora, lo que se hizo en esta clase es exactamente lo mismo pero con los botones de ataque tanto de fuego, agua y tierra, la creación de la variable para encontrar dichos botones y la inicialización del evento de escucha del clic en éstos botones se metieron dentro de la función inicarJuego() para que así nuestro JS logre encontrar dichos botones una vez que el HTML éste cargado por completo y no tengamos el mismo error que nos salva al principio
.
Espero haber podido ayudar con mi aporte, ¡A darle con todo!👊🏼🔥
quevedoportas a mi si me ayudaste a entender mucho mejor :D
La intención es que ahora el programa de manera autonoma pueda decidir que mascota escogerá para pelear con nosotros.
Usaremos la función que realizamos en clases anteriores con Freddy.
Esto nos permite obtener un número aleatorio, que luego podemos traducir a un enemigo aleatorio.
Cada botón puede lanzar un ataque, por lo que debemos crear una función de cada poder.
Para esto vamos a tener que crear variables de alcance global, es decir, variables por fuera de las funciones para que pueda ser utilizada por todas las funciones
Me gusta el lenguaje corporal del profe Juan David, pueden ponerle una pista de reggaeton y parece que está dandolo todo en la pista hehehe.
XD
Hola... estoy felíz con esta clase... me volví loca ´prque me daba error, no me reconocía eventListener : Fuego... y mi error fue que al cambiar de lugar el Script para pedir que se carge todo el html con Windows. ... , copié abajo a pero no borré el de arriba, lo tenía declarado dos veces(jaja)... dos días revisando mi código... j.. por ahí les sirve mi error. Finalmente...luego de escuchar nuevamente cada clase, lo encontré. Gracias pór todos sus aportes... buscando respuestas, encontré información de cada uno de ustedes, que realmente me ayudan a crecer en esta área que me fascina pero es muy nuevo para mi... grácias profe David!! y gracias a cada uno de ustedes!!!
bro tengo el mismo error y le e dado vueltas y no encuentro, me podrias explicar mejor tu codigo
Me parece que crear las variables de forma global, seria mejor, nos permitira acceder despues a ellas.
ahora con que criterio defino si son mejores dentro de la function o que sean globales
Yep, tal cual así lo haremos en clases más adelante para evitar tanto copy paste innecesario. :D
muy buena clase
Dominar las 84 clases te da las bases de un programador junior, pues sabrás HTML, CSS, JavaScript y Backend. Te recomiendo mucho completar "Desarrollo Colaborativo con Git y GitHub para Programadores" para estar listo para el mundo laboral.
Yo creé una función aparte y al final (justo después de la función seleccionar la mascota del enemigo), porque es más fácil volver a entender la lógica secuencial del código leyendo proceso tras proceso.
No sé si es lo más adecuado, sin embargo, entiendo que colocar de primeras los addEventListener's en el código es muy bueno, ya que cuando la página esté lista, lo primero que va a cargar son las principales variables y los escuchadores de eventos.
↓
↓
si yo tambien pense en eso pero la puse en la de el jugador eligue no es como que el pc tenga voluntad propia jejej
profesor, disculpe, siempre e tenido esas dudas de donde ubicar mis códigos.
yo pense en ponerlo al final de la función. debido a que la primera función es para seleccionar la mascota, y luego el enemigo selecciona la mascota.
y es despues de ahi, que se realizaran los ataques.
es correcto?
Es correcto. Ahí funcionaría muy bien agregar el escuchador de eventos para los botones de los ataques. :D
++Una preguntica:++
Como le puedo agregar el color de fondo a mi pagina?
Yo lo hice añadiendo un hoja de estilos (CSS) a mi código, creas un archivo en tu directorio con el nombre que quieras diseño.css y ahora lo debes linkear en tu HTML dentro del <head>
<link rel="stylesheet" href="./diseño.css">
Con eso ya conectarás tu html con la hoja de estilos, luego te vas a tu "diseño.css y escribes lo siguiente:
background-color: green;//Por poner un ejemplo ejemplo
Se puede hacer de otras maneras escribiendo el diseño dentro del HTML pero esta hoja de CSS va a ser imprescindible para darle vida a tu código ;)
Gracias
Sos muy amable
Soy yo o el orden de las clases está invertido? En esta clase (24) apenas se está declarando la variable ataqueJugador y haciendo sus respectivas funciones de ataque agua, tierra y fuego mientras que en la clase anterior (23) la variable ataqueJugador ya está hecha al igual que las funciones
Me acabo de dar cuenta de lo mismo. Me perdí un poco y es que resulta que el orden está invertido.
¡Hola Erick!
Las clases ya se encuentran en el orden correcto.
Gracias por ayudarnos a mejorar Platzi :D