Ejercicio 1: Dibujo de una Casa
En este ejercicio, aprenderemos a utilizar el elemento <canvas> para crear un dibujo básico de una casa. Usaremos rectángulos para las paredes y la puerta, y un triángulo para el techo. Este ejemplo nos ayudará a comprender el uso de las coordenadas y cómo controlar los estilos, colores y formas en el contexto de dibujo.
Ejemplo: Dibujo de una Casa
Código del ejemplo
<canvas id="canvasCasa" width="400" height="300" style="border:1px solid #000000;width: 100%; height: auto;"></canvas>
<script>
var c = document.getElementById("canvasCasa");
var ctx = c.getContext("2d");
// Dibujar las paredes de la casa
ctx.fillStyle = "#8B4513"; // Color marrón para las paredes
ctx.fillRect(100, 150, 200, 100); // (x, y, ancho, alto)
// Dibujar el techo como un triángulo
ctx.beginPath();
ctx.moveTo(100, 150); // Punto izquierdo del techo
ctx.lineTo(300, 150); // Punto derecho del techo
ctx.lineTo(200, 80); // Pico superior del techo
ctx.closePath();
ctx.fillStyle = "#A52A2A"; // Color rojo oscuro para el techo
ctx.fill();
// Dibujar la puerta
ctx.fillStyle = "#654321"; // Color marrón oscuro para la puerta
ctx.fillRect(180, 200, 40, 50); // (x, y, ancho, alto)
// Dibujar una ventana
ctx.fillStyle = "#87CEEB"; // Color azul claro para la ventana
ctx.fillRect(120, 170, 30, 30); // Ventana izquierda
ctx.fillRect(250, 170, 30, 30); // Ventana derecha
</script>
Ejercicio 2: Rueda de Color
En este ejercicio, aprenderemos a crear una rueda de colores utilizando el elemento <canvas>. Dibujaremos varios círculos de diferentes colores distribuidos en forma de círculo para simular una rueda de color. Este ejercicio nos permite practicar el uso de arcos y colores en el contexto de dibujo.
Ejemplo: Rueda de Color
Código del ejemplo
<canvas id="canvasRueda" width="400" height="400" style="border:1px solid #000000;width: 100%; height: auto;"></canvas>
<script>
var c = document.getElementById("canvasRueda");
var ctx = c.getContext("2d");
// Colores para la rueda
var colores = ["red", "orange", "yellow", "green", "blue", "indigo", "violet"];
var centroX = 200, centroY = 200; // Centro del canvas
var radio = 100; // Radio de la rueda
var radioCirculos = 20; // Radio de cada círculo
// Dibujar los círculos en forma de rueda de color
colores.forEach(function(color, index) {
var angulo = index * (2 * Math.PI / colores.length); // Ángulo para cada color
var x = centroX + radio * Math.cos(angulo);
var y = centroY + radio * Math.sin(angulo);
ctx.beginPath();
ctx.arc(x, y, radioCirculos, 0, 2 * Math.PI); // Círculo de color
ctx.fillStyle = color;
ctx.fill();
});
</script>
Ejercicio 3: Animación Simple
En este ejercicio, aprenderemos a crear una animación básica en el elemento <canvas>. El objetivo es hacer que un círculo se mueva de izquierda a derecha. Para ello, usaremos un bucle de animación con la función requestAnimationFrame, que permite actualizar la posición del círculo en cada fotograma para crear el efecto de movimiento.
Ejemplo: Animación de un Círculo en Movimiento
Código del ejemplo
<canvas id="canvasAnimacion" width="400" height="200" style="border:1px solid #000000;width: 100%; height: auto;"></canvas>
<script>
var canvasAnimacion = document.getElementById("canvasAnimacion");
var ctxAnimacion = canvasAnimacion.getContext("2d");
var x = 0; // Posición inicial en el eje x
var y = canvasAnimacion.height / 2; // Centrar en el eje y
var radio = 20; // Radio del círculo
var velocidad = 2; // Velocidad de movimiento
function animarCirculo() {
ctxAnimacion.clearRect(0, 0, canvasAnimacion.width, canvasAnimacion.height); // Limpiar el canvas
// Dibujar el círculo en la nueva posición
ctxAnimacion.beginPath();
ctxAnimacion.arc(x, y, radio, 0, Math.PI * 2);
ctxAnimacion.fillStyle = "blue";
ctxAnimacion.fill();
ctxAnimacion.closePath();
// Actualizar la posición en el eje x
x += velocidad;
// Resetear la posición si el círculo sale del canvas
if (x - radio > canvasAnimacion.width) {
x = -radio;
}
// Solicitar el siguiente fotograma de animación
requestAnimationFrame(animarCirculo);
}
// Iniciar la animación
animarCirculo();
</script>
Ejercicio 4: Recrea un Logo
En este ejercicio, diseñaremos un logo estático para "frioyelectronica.blogspot.com" utilizando el <canvas>. Usaremos un estilo que represente el tema de "frío" y "electrónica" usando formas y texto simples.
Ejemplo: Logo para "Frío Electrónica"
Código del ejemplo
<canvas id="canvasLogoFrioElectronica" width="400" height="300" style="border:1px solid #000000;width: 100%; height: auto;"></canvas>
<script>
var c = document.getElementById("canvasLogoFrioElectronica");
var ctx = c.getContext("2d");
// Fondo del logo
ctx.fillStyle = "#87CEEB"; // Azul claro para dar sensación de frío
ctx.fillRect(0, 0, 400, 300);
// Ícono de rayo para representar "electrónica"
ctx.beginPath();
ctx.lineTo(210, 80);
ctx.lineTo(170, 160);
ctx.lineTo(230, 100);
ctx.lineTo(210, 160);
ctx.lineTo(220, 160);
ctx.closePath();
ctx.fillStyle = "#FFD700"; // Amarillo brillante
ctx.fill();
// Agregar texto
ctx.fillStyle = '#ffffff'; // Color del texto
ctx.font = '24px Arial'; // Tipo de fuente y tamaño
ctx.textAlign = 'center'; // Alinear texto al centro
ctx.fillText('Frío Electrónica', 200, 250); // Coordenadas para centrar
</script>
Ejercicio 5: Juego de Click
En este ejercicio, crearemos un juego simple donde el objetivo es hacer clic en un objeto que se mueve aleatoriamente en el canvas. Usaremos eventos de clic para detectar cuándo el jugador hace clic en el objeto, así como funciones para mover el objeto a nuevas posiciones aleatorias en el canvas. El jugador ganará puntos cada vez que haga clic en el objeto.
Ejemplo: Juego de Click
Código del ejemplo
<canvas id="canvasJuegoClick" width="400" height="300" style="border:1px solid #000000;width: 100%; height: auto;"></canvas>
<div id="puntos" style="margin-top: 10px; font-size: 20px; font-weight: bold;">Puntos: 0</div>
<script>
var canvasJuegoClick = document.getElementById("canvasJuegoClick");
var ctxJuegoClick = canvasJuegoClick.getContext("2d");
var radio = 20; // Radio del objeto
var puntos = 0; // Puntos del jugador
// Función para dibujar el objeto en una posición aleatoria
function dibujarObjeto() {
// Generar posición aleatoria dentro del canvas
var x = Math.random() * (canvasJuegoClick.width - radio * 2) + radio;
var y = Math.random() * (canvasJuegoClick.height - radio * 2) + radio;
// Limpiar el canvas
ctxJuegoClick.clearRect(0, 0, canvasJuegoClick.width, canvasJuegoClick.height);
// Dibujar el objeto
ctxJuegoClick.beginPath();
ctxJuegoClick.arc(x, y, radio, 0, Math.PI * 2);
ctxJuegoClick.fillStyle = "red";
ctxJuegoClick.fill();
ctxJuegoClick.closePath();
// Retornar las coordenadas para el manejo del clic
return { x: x, y: y };
}
// Guardar la posición del objeto
var objetoPos = dibujarObjeto();
// Evento de clic en el canvas
canvasJuegoClick.addEventListener("click", function(event) {
var rect = canvasJuegoClick.getBoundingClientRect();
var mouseX = event.clientX - rect.left;
var mouseY = event.clientY - rect.top;
// Verificar si el clic está dentro del objeto
var distancia = Math.sqrt(Math.pow(mouseX - objetoPos.x, 2) + Math.pow(mouseY - objetoPos.y, 2));
if (distancia < radio) {
puntos++; // Incrementar puntos
document.getElementById("puntos").innerText = "Puntos: " + puntos; // Actualizar puntos
objetoPos = dibujarObjeto(); // Mover el objeto
}
});
</script>
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias