@Afafks123132132165

Почему этот код не работает?

Я делаю игру по этому туториалу https://proglib.io/p/raycasting-for-the-smallest
Но что то не работает не знаю почему помогите пожалуйста мне, а то что то непонятно ничего
<!DOCTYPE html>
<html>
<head>
  <title>Game</title>
</head>
<body>
<canvas id = "canvas" width = "320" height = "480"></canvas>
<script type="text/javascript">
document.getElementById("canvas");
var ctx = canvas.getContext("2d");

x = 152;
y = 232;
left = 0;
right = 0;
mapx = 0;
mapy = 0;
c = 0;
rays = [];
blocks = [];
map = [1,1,1,1,1,1,1,1,1,1,
       0,0,0,0,0,0,0,0,0,0,
       0,0,0,0,0,0,0,0,0,0,
       0,0,0,0,0,0,0,0,0,0,
       0,0,0,0,0,0,0,0,0,0,
       0,0,0,0,0,0,0,0,0,0,
       0,0,0,0,0,0,0,0,0,0,
       0,0,0,0,0,0,0,0,0,0,
       0,0,0,0,0,0,0,0,0,0,
       0,0,0,0,0,0,0,0,0,0,
       0,0,0,0,0,0,0,0,0,0,
       0,0,0,0,0,0,0,0,0,0,
       0,0,0,0,0,0,0,0,0,0,
       0,0,0,0,0,0,0,0,0,0,
       0,0,0,0,0,0,0,0,0,0];

for(i = 0; i < 100; i++){
  rays.push({x:0,y:0,angle:i,radius:100});
}

for(i in map){
  if(map[i] == 1){
    blocks.push({x:mapx,y:mapy});
    mapx+=32;
  }else{
    mapx+=32;
  }
  if(mapx > 320){
    mapy+=32;
  }
}

document.addEventListener("keydown",function(e){
  if(e.keyCode == 87){
    y-=16;
  }

  if(e.keyCode == 65){
    x-=16;
  }

  if(e.keyCode == 68){
    x+=16;
  }

  if(e.keyCode == 83){
    y+=16;
  }

  if(e.keyCode == 37){
    left = 1;
  }

  if(e.keyCode == 39){
    right = 1;
  }
});

document.addEventListener("keyup",function(e){
  if(e.keyCode == 37){
    left = 0;
  }

  if(e.keyCode == 39){
    right = 0;
  }
});

function game(){
  ctx.clearRect(0,0,320,480);

  for(i in blocks){
    ctx.fillRect(blocks[i].x,blocks[i].y,32,32);
  }
  for(i in rays){
    rays[i].x = x + c*Math.cos(rays[i].angle);
    rays[i].y = y + c*Math.sin(rays[i].angle);
    if (map[(Math.floor(rays[i].x))+(Math.floor(rays[i].y))*10]!=0){
      rays[i].x = rays[i].x;
      rays[i].y = rays[i].y;
      rays[i].radius = rays[i].radius;
    }
    ctx.beginPath();
    ctx.strokeStyle = "red";
    ctx.moveTo(x+8,y+8);
    ctx.lineTo(rays[i].x,rays[i].y);
    ctx.stroke();
    ctx.closePath();
    c+=.05;
  }

  ctx.fillRect(x,y,16,16);
}

setInterval(game,20);
</script>
</body>
</html>
  • Вопрос задан
  • 121 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы