Cuando dibujamos con las flechas del teclado, el dibujo puede avanzar por fuera del canvas y volver, como podemos acotar el mov. al canvas?

Pregunta de la clase:
fabricio spiritosi

fabricio spiritosi

Pregunta
studenthace 7 años

Cuando dibujamos con las flechas del teclado, el dibujo puede avanzar por fuera del canvas y volver, como podemos acotar el mov. al canvas?

1 respuestas
para escribir tu comentario
    Elias Ojeda Medina

    Elias Ojeda Medina

    studenthace 7 años

    Una forma puede ser está:

    Para la solución use algo que se llama operador ternario, lo cual es muy sencillo, basta con hacer lo siguiente:

    **condición ? expr1 : expr2 **

    donde la primera expresión indica que hacer si es verdadero y la segunda que hacer si es falso.

    Copio todo el código Js, el HTML es básicamente lo mismo que en el curso.

    Saludos

    var teclas = { LEFT:37, UP:38, RIGHT:39, DOWN:40 } document.addEventListener("keydown", dibujarTeclado); var canvas = document.getElementById("papel"); var papel = canvas.getContext("2d"); var x = 150; var y = 150; dibujarLinea(papel,"red",149,149,151,151) function dibujarTeclado(evento){ var color = "blue"; var movimiento = 5 var posicion = 0; console.log(canvas.width + " " + (y + movimiento) + " "+(x + movimiento)) switch (evento.keyCode) { case teclas.DOWN: posicion = y + movimiento dibujarLinea(papel,color,x,y,x,posicion); y=posicion < canvas.width ? posicion : canvas.width-1; break; case teclas.UP: posicion = y - movimiento dibujarLinea(papel,color,x,y,x,posicion); y= posicion > 0 ? posicion : 1; break; case teclas.LEFT: posicion = x - movimiento dibujarLinea(papel,color,x,y,posicion,y); x= posicion > 0 ? posicion : 1; break; case teclas.RIGHT: posicion = x + movimiento; dibujarLinea(papel,color,x,y,posicion,y); x=posicion < canvas.width ? posicion : canvas.width-1; break; } } function dibujarLinea(lienzo,color, xinicial, yinicial, xfinal, yfinal){ lienzo.beginPath(); lienzo.strokeStyle = color; lienzo.lineWidth = 3; lienzo.scale(1,1); lienzo.moveTo(xinicial,yinicial); lienzo.lineTo(xfinal,yfinal); lienzo.stroke(); lienzo.closePath(); }
Curso Gratis de Programación Básica

Curso Gratis de Programación Básica

Programa desde cero, domina Javascript, entiende HTML y aprende de algoritmos. <strong>Sí, desde cero</strong>. Entenderás la lógica del código, cómo piensan los programadores y cómo programar juegos, proyectos y hasta robots y electrónica. Aprender a programar no es fácil, pero Platzi lo hace efectivo.

Curso Gratis de Programación Básica
Curso Gratis de Programación Básica

Curso Gratis de Programación Básica

Programa desde cero, domina Javascript, entiende HTML y aprende de algoritmos. <strong>Sí, desde cero</strong>. Entenderás la lógica del código, cómo piensan los programadores y cómo programar juegos, proyectos y hasta robots y electrónica. Aprender a programar no es fácil, pero Platzi lo hace efectivo.