THE MATRIX CODE


directement généré par chatgpt o3-mini-high dans une page html et intégré en 5 mn chrono dans le moteur. Magique !
if (_root["canvas_404"]) {
  // Récupération du root et configuration du canvas
					const _root404 = ENV.CanvasManager.getRoot("canvas_404");
					const canvas = _root404._canvas;
				 const ctx = canvas.getContext("2d");
        // Ajuster le canvas pour occuper tout l'écran
        canvas.width = window.innerWidth;
        canvas.height = window.innerHeight;

        // Ensemble de caractères utilisés dans l'animation
        const letters = "abcdefghijklmnopqrstuvwxyz0123456789@#$%^&*()*&^%+-/~{[|`]}";
        const lettersArray = letters.split("");

        const fontSize = 16;
        let columns = canvas.width / fontSize;

        // Initialiser un "drop" par colonne
        let drops = [];
        for (let i = 0; i < columns; i++) {
            drops[i] = 1;
        }

        // Fonction de dessin de l'animation
        function draw() {
            // Fond noir avec effet de traînée pour le fade-out progressif
            ctx.fillStyle = "rgba(0, 0, 0, 0.05)";
            ctx.fillRect(0, 0, canvas.width, canvas.height);

            // Style du texte (vert "Matrix")
            ctx.fillStyle = "#0F0";
            ctx.font = fontSize + "px Arial";

            // Dessiner un caractère pour chaque colonne
            for (let i = 0; i < drops.length; i++) {
                const text = lettersArray[Math.floor(Math.random() * lettersArray.length)];
                ctx.fillText(text, i * fontSize, drops[i] * fontSize);

                // Réinitialiser le drop si il dépasse la hauteur de l'écran (de manière aléatoire)
                if (drops[i] * fontSize > canvas.height && Math.random() > 0.975) {
                    drops[i] = 0;
                }
                drops[i]++;
            }
        }

        // Lancer l'animation à intervalle régulier
        setInterval(draw, 35);

        // Redimensionnement du canvas lors du changement de taille de la fenêtre
        window.addEventListener('resize', function() {
            canvas.width = window.innerWidth;
            canvas.height = window.innerHeight;
            columns = canvas.width / fontSize;
            drops = [];
            for (let i = 0; i < columns; i++) {
                drops[i] = 1;
            }
        });
}