Пожалуйста, сформируй полный HTML-код (ничего не пропускай), выделив его обратными тройными кавычками, для следующего запроса: "Напиши игру змейка". В прошлой итерации код выглядел следующим образом: "<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Snake Game</title>
    <style>
        body {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            background-color: #f0f0f0;
        }
        #gameCanvas {
            border: 1px solid black;
            background-color: #fff;
        }
    </style>
</head>
<body>
    <canvas id="gameCanvas" width="400" height="400"></canvas>
    <script>
        const canvas = document.getElementById("gameCanvas");
        const ctx = canvas.getContext("2d");

        const box = 20;
        let snake = [];
        snake[0] = { x: 9 * box, y: 10 * box };

        let direction;
        let food = {
            x: Math.floor(Math.random() * 19 + 1) * box,
            y: Math.floor(Math.random() * 19 + 1) * box
        };
        let score = 0;

        document.addEventListener("keydown", directionControl);

        function directionControl(event) {
            let key = event.keyCode;
            if (key === 37 && direction !== "RIGHT") {
                direction = "LEFT";
            } else if (key === 38 && direction !== "DOWN") {
                direction = "UP";
            } else if (key === 39 && direction !== "LEFT") {
                direction = "RIGHT";
            } else if (key === 40 && direction !== "UP") {
                direction = "DOWN";
            }
        }

        function collision(newHead, array) {
            for (let i = 0; i < array.length; i++) {
                if (newHead.x === array[i].x && newHead.y === array[i].y) {
                    return true;
                }
            }
            return false;
        }

        function draw() {
            ctx.clearRect(0, 0, canvas.width, canvas.height);

            for (let i = 0; i < snake.length; i++) {
                ctx.fillStyle = i === 0 ? "green" : "lightgreen";
                ctx.fillRect(snake[i].x, snake[i].y, box, box);
                ctx.strokeStyle = "white";
                ctx.strokeRect(snake[i].x, snake[i].y, box, box);
            }

            ctx.fillStyle = "red";
            ctx.fillRect(food.x, food.y, box, box);

            let snakeX = snake[0].x;
            let snakeY = snake[0].y;

            if (direction === "LEFT") snakeX -= box;
            if (direction === "UP") snakeY -= box;
            if (direction === "RIGHT") snakeX += box;
            if (direction === "DOWN") snakeY += box;

            if (snakeX === food.x && snakeY === food.y) {
                score++;
                food = {
                    x: Math.floor(Math.random() * 19 + 1) * box,
                    y: Math.floor(Math.random() * 19 + 1) * box
                };
            } else {
                snake.pop();
            }

            let newHead = { x: snakeX, y: snakeY };

            if (snakeX < 0 || snakeY < 0 || snakeX >= canvas.width || snakeY >= canvas.height || collision(newHead, snake)) {
                clearInterval(game);
            }

            snake.unshift(newHead);

            ctx.fillStyle = "black";
            ctx.font = "45px Changa one";
            ctx.fillText(score, 2 * box, 1.5 * box);
        }

        let game = setInterval(draw, 100);
    </script>
</body>
</html>". Запрос прошлой итерации был таким: "Напиши игру змейка".