Как написать функцию обнаружения столкновений для этой программы в лаборатории приложений и как заставить врагов двигаться по диагонали? - PullRequest
0 голосов
/ 29 апреля 2020

Мне нужно написать функцию обнаружения столкновений в лаборатории приложений для космической стрелялки, чтобы убрать огонь и врага, когда они касаются, я пробовал несколько раз, но продолжаю получать (врага0) не существует. Я не знаю, что я должен делать, а также мне нужна помощь, чтобы мои враги двигались по диагонали!

   var keys = [false, false, false, false];

// клавиши [0] движутся вправо

// клавиши [1] движутся влево

// клавиши [2] движутся вверх

// клавиши [3] движутся вниз

     var xSpeed;

     var ySpeed;

     var magnitude = 10;

     var fireNum = 0;

     var fireSpeed = 20;

     var enemyNum = 0;




    onEvent("buttonStart", "click", function(){

    setScreen("screenGame"); 

    timedLoop(15, function(){

    xSpeed = 0;

    ySpeed = 0;

   if(keys[0]){

   xSpeed = magnitude;

  }

 if(keys[1]){

 xSpeed = -magnitude;

 }

 if(keys[2]){

 ySpeed = -magnitude;

 }

 if(keys[3]){

 ySpeed = magnitude;

 }

 setPosition("imageShip", getXPosition("imageShip") + xSpeed, getYPosition("imageShip")+ySpeed );

 wrapAround("imageShip");

 });

 for(var counter =0; counter < 10; counter++){

 makeEnemy();

 }

 });



  onEvent("screenGame", "keydown", function(event){

  if(event.key == "Right"){

   keys[0] = true;

   }

  if(event.key == "Left"){

  keys[1] = true;

 }

 if(event.key == "Up"){

keys[2] = true;

}

if(event.key == "Down"){

 keys[3] = true;

}

if(event.key == " "){

makeFire();

}


});

onEvent("screenGame", "keyup",function(event){

if(event.key == "Right"){

keys[0] = false;

}

if(event.key == "Left"){

keys[1] = false;

}

if(event.key == "Up"){

keys[2] = false;

}

if(event.key == "Down"){

keys[3] = false;

}


});

// чтобы держать космический корабль на экране

function wrapAround(Spaceship){

var objectX = getXPosition(Spaceship);

var objectY = getYPosition(Spaceship);


if(objectY > 450){
objectY = 0;

}

else if(objectY < 0){

objectY = 450;

}

if(objectX > 320){

 objectX = 0;

}

else if(objectX < 0){
objectX = 320;
}

setPosition(Spaceship, objectX, objectY);
}

// чтобы создать огонь

 function makeFire(){
image("fire"+ fireNum, "https://webstockreview.net/images/bullet-clipart-cartoon-7.png");
setProperty("fire"+fireNum, "width", 20);
setProperty("fire"+fireNum, "height", 20);

 moveFire("fire" + fireNum);

fireNum += 1;
}

/ / стрелять и перемещать огонь

function moveFire(object){
setPosition(object, getXPosition("imageShip") + 35, getYPosition("imageShip"));
var fireLoop = timedLoop(15,function(){
setPosition(object, getXPosition(object) , getYPosition(object) - fireSpeed);

if(getYPosition(object) < 20){
 stopTimedLoop(fireLoop);
 deleteElement(object);  
}
});
}

// для создания врага * адрес к изображению должен быть вместе (он разделяет его здесь)

 function makeEnemy(){
  image("Enemy" +enemyNum,"https://cdn.pixabay.com/photo/2014/04/03/00/42/spaceship- 
 309153_960_720.png");
 setProperty("Enemy"+enemyNum, "width", 35);  
 setProperty("Enemy" + enemyNum, "height", 35);

 setPosition("Enemy"+enemyNum, Math.floor(Math.random()*320), Math.floor(Math.random()*450));

 moveEnemy("Enemy"+enemyNum);
 enemyNum++;
}

// для перемещения противника вокруг экран

 function moveEnemy(object){

 var xEnemySpeed = 3;

 var yEnemySpeed = 3;

 timedLoop(15, function(){
setPosition(object, getXPosition(object)+xEnemySpeed, getYPosition(object)+yEnemySpeed);
if(getXPosition(object)>320 || getXPosition(object)<0){
 xEnemySpeed = -xEnemySpeed;
 }
if(getYPosition(object)>450 || getYPosition(object)<0){
 yEnemySpeed = -yEnemySpeed;
}

});
}

// для удаления огня и врага, когда огонь касается врага

 function collisionDetection(object){
 }      
...