Al incorporar Canvas a tus proyectos, abres la puerta a una infinita cantidad de posibilidades visuales. Este elemento HTML te permite crear gráficos y animaciones de manera dinámica mediante JavaScript. Hoy, exploramos cómo incluir un mapa en el juego de Mokepones utilizando esta poderosa herramienta.
¿Qué es Canvas y cómo funciona?
Canvas es una etiqueta HTML que renderiza un espacio rectangular en una página web. Esto facilita el dibujo de formas, textos e imágenes usando JavaScript. Imagina que tienes un lienzo con un sistema de coordenadas similar al plano cartesiano: el punto 0,0 se encuentra en la esquina superior izquierda y, a partir de ahí, se desplaza a lo largo de los ejes X (horizontalmente) y Y (verticalmente).
Ejemplo de coordenadas: Para dibujar un punto en la posición (2,1), mueve dos píxeles a la derecha y un píxel hacia abajo.
Canvas también permite dibujar no solo puntos, sino líneas, círculos y texturas más complejas que transformarán la experiencia de tu juego.
¿Cómo integrar Canvas en el código HTML?
Vamos a comenzar por añadir Canvas a nuestra estructura HTML. Insertaremos una nueva sección que contendrá este elemento:
<sectionid="ver-mapa"><h3>Recorre el mapa con tu mascota. Con tu Mokepon.</h3><canvasid="mapa"width="300"height="200"></canvas></section>
En esta estructura, la etiqueta <canvas> tiene un ancho de 300 píxeles y un alto de 200 píxeles. Luego, estableceremos los elementos visuales en el archivo CSS y los funcionales con JavaScript.
¿Cómo configurar los estilos CSS para Canvas?
Dando estilo a nuestro Canvas, es crucial definir cómo se muestra en nuestro juego desde un aspecto visual. Podemos centralizarlo y definir un borde:
¿Cómo obtener el contexto y dibujar en Canvas con JavaScript?
Con la estructura y el estilo listos, ahora nos enfocamos en delinear el código JavaScript para aprovechar Canvas. Primero, necesitamos un contexto de dibujo:
Con drawImage, especificamos la imagen y las coordenadas para su despliegue.
¿Cómo continuar mejorando el juego con Canvas?
Con esta configuración de Canvas, has dado el primer paso hacia gráficas más avanzadas en tu juego. No dudes en experimentar con animaciones y event listeners para enriquecer la interactividad de los Mokepones. ¡Sigue desarrollando y aprendiendo para alcanzar nuevos horizontes!
El curso se debería llamar "Reto Intenso de Programación"
Si, porque hace rato dejó de ser "básico"
Curso si no te mueres de una cólera aprendes a programar.
Lo que viene en las siguientes clases es apasionante. Creo que está muy por encima de cualquier curso de Programación básica que haya hecho antes.
Aplicando algunas modificaciones para que los enemigos sean diferentes a los personajes que podemos elegir. Me había complicado con los ataques, pero creo que es mejor continuar con algo más sencillo y más adelante intentar mejorar el juego. Mucho ánimo a todas las personas que lleguéis hasta aquí, ya falta menos 💪🏼
Me encanta eel tema del juego :P
Muchas gracias Juan 🙏🏼
No me apareció la imagen de capipepo pero el rectángulo si me aparecía. En la siguiente clase hacemos que se mueva el personaje y ahí si logre que apareciera hasta que le di click en el botón de mover.
Lo comento para que no se queden aquí buscando la solución. Puede que llegue mas tarde 👍🏼🐢
Muchas gracias por el aporte, a mi me pasó exactamente lo mismo!
me paso lo mismo , fui a la consola y marcaba un error , era que puse imagen en lugar de image,
Esto de hacer cosas sin saber hasta donde se quiere llegar es ridiculo. Minuto 5 y lo unico que hago es COPIAR porque no tengo ni idea del punto a donde se quiere llegar
REPORT: En el quiz de la clase anterior, la pregunta de cómo sacar la longitud de un array tiene la respuesta correcta repetida.
¡Solucionado! Muchas gracias por el aviso :)
Creo que no es buena idea tener todo en un solo archivo de JS
de acuerdo, pero justamente estamos aprendiendo. es parte del camino
Probando ChatGPT para entender mejor lo que estamos haciendo.
gracias!
Si le preguntas en español te dará la respuesta en español
La respuesta que buscas es: drawImage()
Si te sientes frustrado porque no aparece la imagen de capipepo en el canvas, revisa lo siguiente:
new img() / debe ser = new Image()
Con esto resuelves el problema, yo me vi nuevamente la clase para darme cuenta del error que cometi.
Éxitos y recuerda que todo tiene una solución, no te rindas!
let imagenDeCapipepo =newImage() imagenDeCapipepo.src= capipepo.foto lienzo.drawImage( imagenDeCapipepo,20,40,100,100)
Hermano muchas gracias de verdad, perdí 40 minutos de tiempo por una "I" mayúscula en "new Image" hasta que vi tu comentario
Que bien gracias !!
La imagen del cohete que esta en el cavas se ve un poco distorsionada, no se por qué 😥
Seguro es porque no le pusiste el tamaño que requiere la imagen
Ojo con la R de fillRect va en mayúscula. Perdí 15 min con esto. :(
Acabas de salvar mi laptop de un puño por la frustración, thanks mate.
Gochita?
🎨 El uso de Canvas en JavaScript abre la puerta a crear gráficos, animaciones y juegos interactivos directamente en el navegador. Es como tener un lienzo digital donde cada línea y color se dibuja con código. Dominarlo implica entender coordenadas, bucles de actualización y renderizado eficiente, lo que convierte al desarrollador en una especie de artista lógico que optimiza cada trazo para dar vida al juego.
En mi opinión para ser la introducción a la etiqueta debería profundizar un poco más en los conceptos y explicar por qué va añadiendo esas líneas de código, la verdad ya estoy confundida :/
++En caso de que no aparezca la imagen en el canvas:++
Puede deberse a que la imagen no se esté cargando correctamente en el código porque la carga de la imagen depende de muchos factores, como la velocidad de la conexión a internet o el tamaño de la imagen.
Para solucionar esto, debemos de dibujar la imagen cuando ya estemos seguros de que la image que estamos generando se haya cargado, para eso utilizamos onload de la siguiente manera:
let hydroSlimeImage =newImage() hydroSlimeImage.onload=function(){ canvas.drawImage( hydroSlimeImage,20,40,100,100,)} hydroSlimeImage.src= slimeHydro.icon
Por lo tanto, es posible que en algunos casos, la imagen se cargue lo suficientemente rápido como para ser dibujada inmediatamente (Como en la clase), mientras que en otros casos, se necesite esperar a que la imagen se cargue completamente antes de poder dibujarla.
¡Groso!
Revisaba mis variables y verificaba con console.log que estuviera llamando mi objeto pero no se reflejaba en el canvas.
Gracias por tu aporte, me soluciono esta clase.
va muy rápido y no entendí nada solo estaba copiando lo que hacia a la velocidad de la luz jajaja, voy a ver la clase de nuevo, tengo muchas preguntas sobre que es exactamente canvas pero bno.