Не меняется пункт элемента массива объектов. Игра на JS
var canavas = document.getElementById("Ingenerka");
var vision = canavas.getContext("2d");
var personager = document.getElementById("protivnik3");
var dx = 3;
var right = false;
var left = false;
var persX = canavas.height/2+50;
var lazerY = canavas.height - 80;
var xforbullet;
var protivnik =document.getElementById("personag");
var lazerX = persX + 25;
var space = false;
var popadane = true;
var enemyes = [];
var dopschetx = 0;
var dopschety = 0;
var ddopx = 2;
var eban = [];
document.addEventListener("keyup",keyUpHandler,false);
document.addEventListener("keydown",keyDownHandler,false);
function personag(){
vision.beginPath();
vision.clearRect(persX-5,canavas.height-50,10,50);
vision.clearRect(persX+45,canavas.height-50,10,50);
vision.drawImage(personager,persX,canavas.height-50,50,50);
vision.closePath();
}
function dwigatel(){
colisionDetect();
drawenemy(dopschetx,dopschety,enemyes,eban);
personag(persX);
requestAnimationFrame(dwigatel);
if(left && persX >= 0){
persX-=3;
}
else if(right && persX+50<=canavas.height+200){
persX +=3;
}
bullets.forEach(bullet => bullet.draw());
if(space){
if(popadane){
new Bullet();
popadane=false;
}
}
}
function drawenemy(){
for(let c=0;c<11;c++){
for(let k=0;k<8;k++){
if(enemyes[c][k].status===1){
var enemyX = (c * (20 + 30)) + 30 + dopschetx;
var enemyY = (k * (20+10)) + 30 + dopschety;
enemyes[c][k].x=enemyX;
enemyes[c][k].y=enemyY;
vision.beginPath();
vision.clearRect(enemyes[c][k].x-5,enemyes[c][k].y-6,30,30);
vision.drawImage(protivnik,enemyes[c][k].x,enemyes[c][k].y,20,20);
vision.closePath();
}
}
}
if(dopschetx>250 || dopschetx<-30){
ddopx=-ddopx;
dopschety+=10;
dopschetx+=ddopx
}else dopschetx+=ddopx;
}
function colisionDetect() {
for(let i =0;i<11;i++){
enemyes[i]=[];
for(let j=0;j<8;j++){
enemyes[i][j]={x:0,y:0,status:1};
}
}
}
function keyUpHandler(e){
if(e.keyCode==39){
right = false;
}
else if(e.keyCode == 37){
left = false;
}
else if(e.keyCode == 32){
space = false;
}
}
function keyDownHandler(e){
if(e.keyCode==39){
right = true;
}
else if(e.keyCode == 37){
left = true;
}
else if(e.keyCode == 32){
space = true;
}
}
const bullets = [];
class Bullet {
constructor(){
this.x = persX+25;
this.y = lazerY;
bullets.push(this);
}
draw(){
this.y-=5;
if(this.y<0){
bullets.splice(bullets.indexOf(this));
popadane = true;
vision.clearRect(0,0,800,800);
}
vision.fillStyle = 'red';
vision.clearRect(this.x,this.y,5,10);
vision.fillRect(this.x,this.y,5,5);
for(let c=0;c<11;c++){
eban[c] =[];
for(let k=0;k<8;k++){
if(this.y<enemyes[c][k].y+30 && this.x>enemyes[c][k].x && this.x<enemyes[c][k].x+30 ){
bullets.splice(bullets.indexOf(this));
vision.clearRect(this.x,this.y,5,10);
popadane = true;
enemyes[c][k]= 0;
}
}
}
}
}
dwigatel();
Есть массив с координатами и статусом противника. В случае совпадения координат пули и противника последний должен исчезать, но этого не происходит. Если что-то не понятно, то пишите - объясню как смогу. P.S. Про код можно ничего не говорить, знаю что там много проблем и можно было меньше переменных юзать. Это тренировочный вариант
<!DOCTYPE html>
<html lang = "ru">
<head>
<meta charset="utf-8">
<title>Космические захватчики</title>
<style>
*{margin: 0;padding: 0}
canvas{margin: 0 auto;display: block;background: black;}
</style>
<img src="противник.png" id="personag">
<img src="противник3.png" id="protivnik1">
<img src="противник2.png" id="protivnik2">
<img src="персонаж.png" id="protivnik3">
</head>
<body>
<canvas id="Ingenerka" height = "600" width = "800" style = "border:1px solid"></canvas>
<script src="Script.js" charset="utf-8"></script>
</body>
</html>