проблемы с написанием batle city на js

let canvas = document.getElementById('canvas');
let ctx = canvas.getContext('2d');

let tank = new Image();
tank.src = 'src/tank_front.png'

let tank_position = {
  x: canvas.width / 2,
  y: canvas.height / 2
}

let dir = false;
document.addEventListener('keydown', direction);

function direction(event) {
  if (event.keyCode == 37)
    dir = "left";
  else if (event.keyCode == 38)
    dir = "up";
  else if (event.keyCode == 39)
    dir = "right";
  else if (event.keyCode == 40)
    dir = "down";
}

function Draw() {

  if (dir = 'up') tank_position.y++;
  else if (dir = 'down') tank_position.y--;
  else if (dir = 'right') tank_position.x++;
  else if (dir = 'left') tank_position.x--;

  ctx.drawImage(tank, tank_position.x, tank_position.y);
}
setInterval(Draw, 10);
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <link rel="stylesheet" href="style.css">
</head>

<body>
  <canvas id="canvas" width="500" height="500"></canvas>
  <script src="script.js"></script>
</body>

</html>
введите сюда описание изображения


Ответы (1 шт):

Автор решения: Oliver Patterson

Вы используете в условии не проверку на значение, а присваивание переменной значения.

function Draw() {

  if (dir == 'up') tank_position.y++;
  else if (dir == 'down') tank_position.y--;
  else if (dir == 'right') tank_position.x++;
  else if (dir == 'left') tank_position.x--;

  ctx.drawImage(tank, tank_position.x, tank_position.y);
}
→ Ссылка