Introduction
Qui aurait cru qu'un t-shirt pourrait être à l'origine d'un projet de codage créatif ? C'est pourtant ce qui s'est passé pour un développeur passionné de la communauté Re: Factor. En tombant sur un t-shirt Uniqlo contenant du code Bash obfusqué, l'auteur a été inspiré pour créer un programme amusant utilisant Raylib, démontrant ainsi comment la programmation peut servir à des causes aussi nobles que la paix mondiale.
Le Contexte
La campagne "Peace for All" est une initiative menée par Akamai, en collaboration avec Uniqlo, pour promouvoir la paix mondiale. L'idée était simple mais ingénieuse : imprimer un extrait de code sur un t-shirt. Ce code, une fois décodé, révèle un message de paix.
Le Défi Technique
L'auteur de l'article a utilisé l'OCR pour convertir le texte imprimé en une chaîne de caractères, qu'il a ensuite décodée avec base64 --decode. Ce processus lui a rappelé les jours où il reproduisait manuellement des programmes issus de magazines informatiques. Le défi était de recréer un programme similaire utilisant Raylib avec Factor, un langage de programmation fonctionnel et empilé.
Implémentation avec Factor et Raylib
Les Constantes de Base
Pour commencer, l'auteur a défini certaines constantes pour le message, les dimensions de l'écran, et les couleurs. Le message "♥PEACE♥FOR♥ALL" s'affiche de façon circulaire, créant une boucle infinie.
``factor CONSTANT: message $[ "♥PEACE♥FOR♥ALL" <circular> ] CONSTANT: width 800 CONSTANT: height 600 CONSTANT: font-size 24 ``
Dessiner un Cœur
Le programme nécessite de dessiner un cœur, car le caractère par défaut ne contient pas ce glyphe. Ceci est réalisé en utilisant des cercles et des triangles pour assembler la forme du cœur.
``factor :: draw-heart ( x y color -- ) ``
Animation et Couleur
Le programme utilise une onde sinusoïdale pour animer l'affichage du texte et change les couleurs graduellement de cyan à orange.
``factor : wave-x ( tick -- x ) : wave-color ( tick -- color ) ``
Boucle de Rendu
Chaque image est rendue en dessinant les glyphes pour chaque ligne de texte, créant ainsi une animation continue.
``factor : render ( tick -- ) ``
Conclusion
Ce projet montre comment même des idées simples peuvent être transformées en projets innovants avec un peu de créativité et de passion pour le code. Cela souligne également l'impact potentiel du code pour soutenir des causes importantes comme la paix. Alors, prêt à utiliser tes compétences de codage pour un monde meilleur ?
Discutons de ton projet en 15 minutes.