0
Next I wanted to do something like this hedge animation, however I do not know how to make the cover follow the mouse, the method I used at most with low-up or right-left. The code below ta inside setInterval, and if I configure for the keyboard works the drive only the mouse that will not.
 const px = 15;
let snake = [];
snake[0] = {
    x: 5 * px,
    y: 3 * px
}
let direction;
export default function snakeAnimation() {
    const canvas = document.querySelector('.screen');
    const ctx = canvas.getContext('2d');
    const px = 15;
    canvas.width = 30 * 15;
    canvas.height = 30 * 15;
    ctx.fillStyle = "rgb(2550,255,255)";
    ctx.fillRect(0, 0, canvas.width, canvas.height);
        if (snake[0].y < 0 && direction == 'ArrowUp') {
        console.log('fire', snake[0].y)
        snake[0].y = canvas.width;
        console.log('fire', snake[0].y)
    }
    if (snake[0].x >= canvas.width && direction == 'ArrowRight') {
        snake[0].x = 0
    }
    if (snake[0].y >= canvas.height && direction == 'ArrowDown') {
        snake[0].y = 0;
    }
    if (snake[0].x < 0 && direction == 'ArrowLeft') {
        snake[0].x = canvas.width;
    }
    let trasparent = 5;
    for (let i = 0; i < snake.length; i++) {
        if(i == 0){
            ctx.fillStyle = `#fc5c65`;
            ctx.fillRect(snake[i].x, snake[i].y, px, px);
        }else{
            ctx.fillStyle = `rgba(255,0,0,0.${trasparent})`;
            ctx.fillRect(snake[i].x, snake[i].y, px, px);
            trasparent = trasparent - 1;
        }
        
  
    }
    let snakeX = snake[0].x;
    let snakeY = snake[0].y;
    if (direction == 'ArrowUp') snakeY -= px;
    if (direction == 'ArrowRight') snakeX += px;
    if (direction == 'ArrowDown') snakeY += px;
    if (direction == 'ArrowLeft') snakeX -= px;
     
    const sheadSnake = {
        x: snakeX,
        y: snakeY
    }
    canvas.addEventListener('mousemove', update);
    function update(e){
        let x = Math.round(e.clientX - canvas.offsetLeft);
        let y = e.clientY - canvas.offsetTop;
    
        // movimento
        if(x < (snakeX + px) && snakeY){
            direction = 'ArrowLeft';
        }
        if(x > (snakeX + px)){
            direction = 'ArrowRight';
        }
        if(y < (snakeY + px)){
            direction = 'ArrowUp';
        }
        if(y > (snakeY + px)){
            direction = 'ArrowDown';
        }
        console.log(x, y)
    }
    snake.unshift(sheadSnake);
    console.log(snakeX)
}