Buenas noches comunidad, tengo una pregunta: en mi codigo logre que una nueva imagen que es un lobo se moviera pero no logro que los anim...

Ulises Ariel Cruz Aguilar

Ulises Ariel Cruz Aguilar

Pregunta
student
hace 5 años

Buenas noches comunidad, tengo una pregunta: en mi codigo logre que una nueva imagen que es un lobo se moviera pero no logro que los animales se queden quietos ya que estos al mover al lobo se ejecuta su funcion tambien intente separarlos pero el canvas a veces ponia por detras al lobo.

HTML.

<!DOCTYPE html>

<html>

<head>

<meta charset=“utf-8”>

<title>Villa Platzi</title>

</head>

<body>

<canvas width=“500” height=“500” id=“villaplatzi”></canvas>

<script src=“platzi.js”></script>

</body>

</html>

JS.

var vp = document.getElementById(“villaplatzi”);

var papel = vp.getContext(“2d”);

var cantidadV = aleatorio(1, 2);

var cantidadC = aleatorio(1, 2);

var cantidadP = aleatorio (1, 2);

var xLobo = 0;

var yLobo = 0;

document.addEventListener(“keydown”, moverLobo);

var fondo =

{

url:“tile.png”,

cargaOK: false

}

var vaca =

{

url:“vaca.png”,

cargaOK: false

}

var pollo =

{

url:“pollo.png”,

cargaOK: false

}

var cerdo =

{

url:“cerdo.png”,

cargaOK: false

}

var lobo =

{

url:“lobo.png”,

cargaOK: false

}

fondo.imagen = new Image();

fondo.imagen.src = fondo.url;

fondo.imagen.addEventListener(“load”, cargarFondo);

vaca.imagen = new Image();

vaca.imagen.src = vaca.url;

vaca.imagen.addEventListener(“load”, cargarVacas);

cerdo.imagen = new Image();

cerdo.imagen.src = cerdo.url;

cerdo.imagen.addEventListener(“load”, cargarCerdos);

pollo.imagen = new Image();

pollo.imagen.src = pollo.url;

pollo.imagen.addEventListener(“load”, cargarPollos);

lobo.imagen = new Image();

lobo.imagen.src = lobo.url;

lobo.imagen.addEventListener(“load”, cargarLobo);

function cargarFondo()

{

fondo.cargaOK = true;

dibujar();

}

function cargarVacas()

{

vaca.cargaOK = true;

dibujar();

}

function cargarCerdos()

{

cerdo.cargaOK = true;

dibujar();

}

function cargarPollos()

{

pollo.cargaOK = true;

dibujar();

}

function cargarLobo()

{

lobo.cargaOK = true;

dibujar();

}

function dibujar()

{

if(fondo.cargaOK == true)

{

papel.drawImage(fondo.imagen, 0, 0);

}

if(vaca.cargaOK == true)

{

for(i=0; i<cantidadV; i++)

{

var x = aleatorio(0, 3);

var y = aleatorio(0,3);

var x = x * 80

var y = y * 80

papel.drawImage(vaca.imagen, x, y);

}

}

if(cerdo.cargaOK == true)

{

for(i=0; i<cantidadC; i++)

{

var x = aleatorio(0, 2);

var y = aleatorio(0,2);

var x = x * 80

var y = y * 80

papel.drawImage(cerdo.imagen, x, y);

}

}

if(pollo.cargaOK == true)

{

for(i=0; i<cantidadP; i++)

{

var x = aleatorio(0, 3);

var y = aleatorio(0,3);

var x = x * 80

var y = y * 80

papel.drawImage(pollo.imagen, x, y);

}

}

if(lobo.cargaOK == true)

{

papel.drawImage(lobo.imagen, xLobo, yLobo)

}

}

//Termina de cargar las imagenes

function aleatorio(min, max)

{

var resultado;

resultado = Math.floor(Math.random() * (max - min + 1)) + min;

return resultado;

}

//Termina de hacer random su posicion

function moverLobo(evento)

{

var movimiento = 20;

var teclas =

{

UP: 38,

DOWN: 40,

LEFT: 37,

RIGHT: 39

};

switch (evento.keyCode)

{

case teclas.UP:

if (yLobo > 0)

{

yLobo = yLobo - movimiento;

dibujar();

}

break;

case teclas.DOWN:

if (yLobo < 450)

{

yLobo = yLobo + movimiento;

dibujar();

}

break;

case teclas.LEFT:

if (xLobo > 0)

{

xLobo = xLobo - movimiento;

dibujar();

}

break;

case teclas.RIGHT:

if(xLobo < 450)

{

xLobo = xLobo + movimiento;

dibujar();

}

break;

default:

console.log("Otra tecla : " + evento.key);

break;

}

}

Muchas Gracias.

1 respuestas
para escribir tu comentario
    Sneyder Barreto

    Sneyder Barreto

    student
    hace 5 años

    ¡Hola! Podrías revisar la solución propuesta por otro compañero aquí. Él propuso guardar las coordenadas de los animales en un array para que cuando se llame la función

    dibujar()
    no se vuelvan a generar los animales en posiciones diferentes. Revisalo que seguramente te funciona con lo que propone. Un saludo.

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.