Compétence 2 · Optimisation
SAE Optimisation & Algorithmes en C
Description du projet :
Au départ, coder un jeu Sokoban en langage C ressemblait à un excellent exercice pour maîtriser les structures de base et les tableaux à deux dimensions. Le jeu fonctionnait, le joueur pouvait déplacer ses caisses, et l’objectif semblait atteint. Mais c'est précisément là que le véritable défi a commencé : passer d’un code qui « marche » à un programme véritablement optimisé.
Le Sokoban, sous ses airs de puzzle rétro inoffensif, cache une vraie complexité algorithmique dès que les niveaux s’agrandissent ou que l'on cherche à analyser les coups du joueur. Très vite, mon code initial a montré ses limites. Les boucles imbriquées ralentissaient l'exécution et chaque rafraîchissement d'écran consommait plus de ressources que nécessaire. C'est à ce moment précis que j'ai dû basculer dans la peau d'un « optimisateur ».
Pour valider cette compétence, j'ai méthodiquement traqué la moindre perte de performance. J'ai repensé la gestion de la mémoire en nettoyant les allocations dynamiques superflues pour éviter les fuites. J'ai également réécrit mes fonctions de détection de collision et de mise à jour de la grille : en éliminant les calculs redondants à l'intérieur des boucles critiques, j'ai réussi à réduire drastiquement la complexité temporelle de mon algorithme.
Ce travail de l'ombre m'a appris une leçon essentielle : un bon développeur ne se contente pas de résoudre un problème, il veille à ce que sa solution soit fluide, légère et scalable. Ce Sokoban n'est plus seulement un projet d'études, c'est la preuve que je sais auditer mon propre code, mesurer sa complexité et l'affiner pour obtenir une application rapide et performante.
Compétences validées :
Maîtrise de la complexité mathématique, structures de données avancées.