🎯 Présentation
Le projet LabyrinthSolver consiste en la création d’un générateur et résolveur de labyrinthes en C. Le projet a été réalisé dans le cadre de mes études à Junia ISEN, avec un accent particulier sur la conception d’algorithmes efficaces et la gestion de la qualité du code à bas niveau.
L’objectif était de générer un labyrinthe parfait et de le résoudre en utilisant plusieurs algorithmes, tout en intégrant un rendu graphique pour visualiser le processus. J’ai exploré différents algorithmes de génération et de résolution de labyrinthes, et j’ai utilisé Raylib pour l’affichage graphique, afin de rendre l’application interactive et visuellement claire.
🛠️ Technologies utilisées
Langage et Outils

Algorithmes


📸 Aperçu visuel

🚀 Points forts du projet
- Exploration d’algorithmes divers : J’ai exploré plusieurs algorithmes de génération et de résolution de labyrinthes, notamment Backtracking (DFS) et Kruskal’s Algorithm, afin de comprendre leurs avantages et inconvénients.
- Rendu graphique avec Raylib : Utilisation de Raylib pour un affichage visuel dynamique et interactif, permettant de visualiser l’évolution de la génération et de la résolution du labyrinthe.
- Optimisation du code : Un effort particulier a été fait pour écrire du code propre et optimisé, en évitant les erreurs communes à bas niveau, et en garantissant la gestion efficace de la mémoire et des structures de données.
- Simplicité et efficacité : Malgré la complexité des algorithmes sous-jacents, l’implémentation reste claire, et l’application est fluide et efficace.
🧑💻 Mon rôle dans ce projet
Tout au long de ce projet, j’ai été responsable de toutes les étapes du développement, notamment :
- Conception des algorithmes : Choix et implémentation des algorithmes de génération et de résolution, y compris le backtracking et Kruskal.
- Implémentation en C : Développement en langage C avec une gestion soignée des structures de données, de la mémoire, et des optimisations pour assurer une performance optimale.
- Rendu graphique avec Raylib : Intégration de Raylib pour fournir une interface graphique interactive, facilitant l’exploration visuelle du labyrinthe et de sa résolution.
- Qualité du code : Une attention particulière a été portée à la qualité du code, avec un focus sur la lisibilité, la modularité et l’efficacité, typique des projets à bas niveau.
🎥 Vidéo du projet
Voici une vidéo rapide qui montre l’interface et le fonctionnement du générateur et du résolveur de labyrinthes :
🔗 Lien vers le projet
Le code source est accessible sur GitHub :
Consulter le dépôt GitHub
📄 Détails techniques
Génération du labyrinthe
J’ai utilisé deux algorithmes populaires pour la génération des labyrinthes :
- Backtracking (DFS) : Un algorithme récursif qui explore chaque cellule en cassant les murs pour former un chemin sans cycle, garantissant un labyrinthe parfait.
- Kruskal’s Algorithm : Un autre algorithme de génération basé sur les arbres de recouvrement minimum pour créer un labyrinthe parfait.
Résolution du labyrinthe
La résolution est également effectuée avec une variante du backtracking, qui explore le labyrinthe jusqu’à trouver la sortie, marquant chaque cellule faisant partie du chemin.