Pen Settings

HTML

CSS

CSS Base

Vendor Prefixing

Add External Stylesheets/Pens

Any URL's added here will be added as <link>s in order, and before the CSS in the editor. If you link to another Pen, it will include the CSS from that Pen. If the preprocessor matches, it will attempt to combine them before processing.

+ add another resource

JavaScript

Babel includes JSX processing.

Add External Scripts/Pens

Any URL's added here will be added as <script>s in order, and run before the JavaScript in the editor. You can use the URL of any other Pen and it will include the JavaScript from that Pen.

+ add another resource

Packages

Add Packages

Search for and use JavaScript packages from npm here. By selecting a package, an import statement will be added to the top of the JavaScript editor for this package.

Behavior

Save Automatically?

If active, Pens will autosave every 30 seconds after being saved once.

Auto-Updating Preview

If enabled, the preview panel updates automatically as you code. If disabled, use the "Run" button to update.

Format on Save

If enabled, your code will be formatted when you actively save your Pen. Note: your code becomes un-folded during formatting.

Editor Settings

Code Indentation

Want to change your Syntax Highlighting theme, Fonts and more?

Visit your global Editor Settings.

HTML

              
                
<canvas id="canvas"></canvas>
<img id="face" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAADNSURBVDhPjZPBEQIxCEXpwVK2hlTo2S7swfFiF160Bhf5YSEE0TUzzM6QPP4PYYmL1VrjHNU5ikkDmJ+SvjCvR40bebF43mGADr0OzIiHbFtIgfWkRWx1WBOqREQ9Iui5VGDAsJfVonJwYOrkqgGslN3JddhXOKnuwXzWuw+4sljlRHmGN8vLsswdTnDf/4Cli7iTdfXXF7A92eh2KFBOE54PqtvA4MwMo8C9dmBgHJR5wgAjoJDj24SZTZ9teQp01MLU4mi67XzHf/+qN2qIbkg0x6ZFAAAAAElFTkSuQmCC" />
<img id="maze" src="data:image/png;base64,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" alt="">
              
            
!

CSS

              
                img { display:none; }
canvas{ border:5px double black; }
              
            
!

JS

              
                window.onload = function() {
  let canvas = document.getElementById("canvas");
  let context = canvas.getContext("2d");

  let mazeImg = document.getElementById("maze");
  let faceImg = document.getElementById("face");

  // обработка нажатия кнопок
  window.onkeydown = processKey;

  // начальная позиция
  let x = 0;
  let y = 0;

  // смещение
  let dx = 0;
  let dy = 0;

  let timer;

  // отрисовать фон лабиринта
  drawMaze(268, 5);

  // отрисовка фона
  function drawMaze(startingX, startingY) {
    canvas.width = mazeImg.width;
    canvas.height = mazeImg.height;

    // Рисуем лабиринт
    context.drawImage(mazeImg, 0,0);

    // Рисуем значок
    x = startingX;
    y = startingY;
    context.drawImage(faceImg, x, y);
    context.stroke();

    // Рисуем следующий кадр
    window.requestAnimationFrame(drawFrame);
  }

  // Обработка нажатия кнопок
  function processKey(e) {
    e.preventDefault();

    // Если значок находится в движении, 
    // останавливаем его
    dx = 0;
    dy = 0;

    // Если нажата стрелка вверх, 
    // начинаем двигаться вверх
    if (e.keyCode == 38) {
      dy = -1;
    }

    // Если нажата стрелка вниз, 
    // начинаем двигаться вниз
    if (e.keyCode == 40) {
      dy = 1;
    }

    // Если нажата стрелка влево, 
    // начинаем двигаться влево
    if (e.keyCode == 37) {
      dx = -1;
    }

    // Если нажата стрелка вправо, 
    // начинаем двигаться вправо
    if (e.keyCode == 39) {
      dx = 1;
    }
  }

  // Отрисовка кадра
  function drawFrame() {
    // Обновляем кадр только если значок движется
    if (dx != 0 || dy != 0) {
      //Закрашиваем перемещение значка желтым цветом
      context.beginPath();
      context.fillStyle = "rgb(254,244,207)";
      context.rect(x, y, 15, 15);
      context.fill();

      // Обновляем координаты значка, создавая перемещение
      x += dx;
      y += dy;

      // Проверка столкновения со стенками лабиринта
      if (checkForCollision()) {
        x -= dx;
        y -= dy;
        dx = 0;
        dy = 0;
      }

      // Перерисовываем значок
      context.drawImage(faceImg, x, y);

      // Проверяем дошел ли пользователь до финиша
      if (y > (canvas.height - 17)) {
        alert("Ты победил!");
        return; 
      }
    }

    // Рисуем следующий кадр
    window.requestAnimationFrame(drawFrame);
  }

  function checkForCollision() {
    // Перебираем все пиксели лабиринта и инвертируем их цвет
    let imgData = context.getImageData(x-1, y-1, 15+2, 15+2);
    let pixels = imgData.data;

    // Получаем данные для одного пикселя
    for (let i = 0; n = pixels.length, i < n; i += 4) {
      let red = pixels[i];
      let green = pixels[i+1];
      let blue = pixels[i+2];
      let alpha = pixels[i+3];

      // Смотрим на наличие черного цвета стены, 
      // что указывает на столкновение
      if (red == 0 && green == 0 && blue == 0) {
        return true;
      }
      
      // Смотрим на наличие серого цвета краев, 
      // что указывает на столкновение
      if (red == 169 && green == 169 && blue == 169) {
        return true;
      }
    }
    
    // Столкновения не было
    return false;
  }
}

              
            
!
999px

Console