En el desarrollo de aplicaciones web interactivas, manejar los eventos de teclado es esencial para enriquecer la experiencia del usuario. ¿Cómo podemos capturar y utilizar estos eventos? Es fundamental entender los "event listeners", herramientas que nos permiten detectar acciones específicas, en este caso, la pulsación o liberación de teclas. Empezaremos añadiendo un "event listener" que escuche el evento "keydown", y llamaremos a una función cada vez que una tecla sea presionada.
Cuando se añade un "event listener", a menudo se retorna un objeto event, que contiene información vital sobre la acción realizada. Este objeto puede decirnos qué tecla fue presionada, cuál fue el valor de un input, entre otras cosas. Aprovechamos esta información para trazar qué tecla se pulsó usando event.key, que devuelve el nombre de la tecla.
¿Cómo mover un personaje en el juego usando el teclado?
Una vez que detectamos las teclas, el siguiente paso es implementar la lógica para mover un personaje. Usamos una estructura switch-case para comparar la tecla presionada con las flechas direccionales.
Las funciones como moverArriba(), moverAbajo(), etc., deben estar previamente definidas para manipular las coordenadas del personaje dentro de tu juego, permitiendo así que el personaje se desplace en la dirección correspondiente.
¿Cómo organizar mejor el código?
Para mantener nuestro código limpio y organizado, implementamos la función iniciarMapa. Esta función reunirá todo lo necesario para iniciar el mapa, incluyendo la configuración de "event listeners".
Invocamos iniciarMapa() al cargar la aplicación, asegurando que todo esté listo para funcionar correctamente desde el principio. Mantener el código organizado no solo mejora la legibilidad, sino que facilita el mantenimiento a largo plazo.
Con estos fundamentos, has dado un paso significativo hacia la creación de aplicaciones web interactivas. ¡Continúa explorando y mejorando tus habilidades! Remember, practicar es la clave para dominar el arte del desarrollo de software.
Aaaaaaay neta como me encanta este curso, he aprendido y afianzado tantas cosas. Que felicidad :3, tengo que ir ahorrando pal siguiente año de sub JAJA NO QUIERO PARAR DE APRENDER ♥
yo adquirí el año en el buen fin y fue un super precio la verdad, lo recomendable sería que contrates cuando puedas y renueves el año en el buen fin )el tiempo se acumula por lo cual no perderías meses de suscripción) y así mantendrás ese precio cada que renueves a futuro.
fr fr
Me siento re hacker, es mucho codigo ,funciones, variables y no entiendo mucho cuando van avanzando las clases, pero asi me pasaba con el css y ahora me encanta, Muy bien por hacer esto tan didactico creo que asi se queda mas en nuestras memorias.
x 2 jejeje
Por eso nunca hay que parar de aprender!!!
Definición de switch: "es un sandwichito de if"
By: Estefany Salas
JAJAJAJA morí
Jajajaja me perdi esto, pero me encanta
FR FR
Yo puse color por cada vez que se presionaba el boton, ya sea manual o con teclado
Primero llame en javaScript cada uno de los botones
const btnArriba =document.getElementById("arriba")const btnDerecha =document.getElementById("derecha")const btnAbajo =document.getElementById("abajo")const btnIzquierda =document.getElementById("izquierda")despues en cada funcion de movimiento agreque...functionmoverDerecha(){ capipepo.velocidadX=+5 btnDerecha.style.backgroundColor='aliceblue'//Color al presionar el boton cada vez que se mueve el personaje}
y cuando se detiene cambias el color al original
functiondetenerMovimiento(){ capipepo.velocidadX=0 capipepo.velocidadY=0 btnArriba.style.backgroundColor='#dea73e' btnAbajo.style.backgroundColor='#dea73e' btnIzquierda.style.backgroundColor='#dea73e' btnDerecha.style.backgroundColor='#dea73e'}
Buen tip.
Excelente
Agregué que las teclas w,s,a,d y las flechas funcionen:
Recuerdan cuando se anidaban muchos if-else en lecciones anteriores?
Bueno según el caso, pero también se podría resolver y en forma mas prolija con esta estructura switch-case
Hay un truco que nos enseña JuanDC en el curso practico, si queremos ver que metodos se pueden usar dentro del event, podemos hacer lo siguiente dentro de la funcion:
window.addEventListener('keydown', sePresionaUnaTecla)functionsePresionaUnaTecla(event){console.log({event})}// esto sería lo mismo que hacer lo siguiente:window.addEventListener('keydown',e=>{console.log({e})})// o tambiénwindow.addEventListener('keydown',function(e){console.log({e})})
Al poner el evento entre llaves nos entrega en un objetivo las propiedades de ese event, entre algunas que muestran la misma info sería e.code, o e.keyCode, aunque esta última ya esta obsoleta.
hay dos pequeños problemas con esta forma de mover a los personajes
1 las velocidades se suman al presionar dos teclas, por lo tanto el movimiento en diagonal es más rápido de lo que debería
2 al presionar dos teclas y dejar de presionar una de ellas se detienen los dos movimientos, solo debería detenerse el de la tecla que se dejó de presionar
¿Cómo lo solucionarías?
Es un detalle menor, pero se puede resolver poniendo 8 direcciones en lugar de 4.
8 switch/case con 8 funciones de dirección de movimiento.
Y en diagonal ajustar la velocidad deseada.
¡Hola! Tengo una duda, ¿por qué a me sale el personaje tan pixelado? A la profesora le sale súper bien definido y no entiendo por qué pueda ser. :(
Revisa que tengas las imágenes originales. Estas deben ser de 513 x 513 px.
Yo sé que tú también intentaste mover a Capipepo en diagonal presionando ambas teclas, y sonreíste al ver que sí se puede😏
si agregas && a los casos tambien podras mover el mokepon con w a s d
graciasss
Me la pase todo un dia buscando un error y era porque al darle a la tecla izquierda se movia hacia el lado derecho...
Y era solo porque no le puse el 'break"
Yo les dejé los eventos que ya tenían en el HTML para el mouse, y a través de JavaScript hice que los eventos táctiles los replicaran:
functionestablecerEventosTactilesBotones(){// Copiamos los eventos que ya tenían para el teclado sectionVerMapa.querySelectorAll("button").forEach((button)=>{ button.addEventListener('touchstart', button.onmousedown,{passive:false}); button.addEventListener('touchend', button.onmouseup,{passive:false});});}
no le entiendo nada a esta mujer:(
Si tienes dudas especificas puedes agregarlas acá en los comentarios para poder ayudarte.
Bueno tuve error con la funcion para hacer mover el mokepon, en si la consola me decia que "key" no era una propiedad definida, por lo cual tube que recurrir a las enseñanzas del profe Diego De Granda y cambiar un poco las cosas, al final me funciono asi: