SAÉ S1.02 - Snake autonome et analyse de performance des algorithmes
Suite au développement du jeu Snake (SAÉ S1.01), ce projet avait pour objectif de rendre le serpent autonome en programmant ses mouvements pour qu'il mange les pommes de manière optimale. L'efficacité de différents algorithmes a été mesurée par le nombre de déplacements nécessaires et le temps CPU.
Ce projet s'inscrit dans le cadre de la compétence "Appréhender et construire des algorithmes" et plus spécifiquement l'apprentissage critique "Analyser un problème avec méthode".
Contrairement à la première SAÉ où le serpent était contrôlé manuellement, ce projet s'est concentré sur l'implémentation d'algorithmes permettant au serpent de se déplacer de manière autonome. L'objectif était d'optimiser ses mouvements pour qu'il mange toutes les pommes présentes dans le jeu en un minimum de déplacements.
Ce projet m'a permis d'explorer plusieurs concepts clés en algorithmique :
Implémentation d'algorithmes pour déterminer le chemin optimal vers les pommes.
Évaluation et comparaison des algorithmes selon le nombre de déplacements et le temps CPU.
Amélioration itérative des algorithmes pour contourner les obstacles et réduire les déplacements inutiles.
Gestion d'un environnement non aléatoire pour permettre des comparaisons objectives entre algorithmes.
Le développement de ce projet a suivi une approche incrémentale avec quatre versions, chacune ajoutant de la complexité et nécessitant des améliorations algorithmiques :
Implémentation d'un algorithme simple permettant au serpent de se diriger vers la pomme la plus proche dans un environnement sans obstacle. Cette version a servi de référence pour les comparaisons ultérieures.
Amélioration de l'algorithme pour gérer efficacement plusieurs pommes présentes simultanément dans le jeu. L'algorithme devait déterminer l'ordre optimal pour manger les pommes.
Introduction d'obstacles statiques dans l'environnement, nécessitant une adaptation de l'algorithme pour trouver des chemins alternatifs et éviter les collisions tout en maintenant une bonne performance.
Développement d'un algorithme avancé combinant les techniques des versions précédentes avec des optimisations supplémentaires pour minimiser le nombre total de déplacements nécessaires pour manger toutes les pommes.
Ce projet m'a permis de développer et renforcer plusieurs compétences clés en informatique et en analyse d'algorithmes :
Conception et implémentation d'algorithmes de recherche de chemins comme A*, Dijkstra ou des algorithmes gloutons personnalisés.
Développement de méthodes rigoureuses pour comparer l'efficacité de différents algorithmes en termes de temps et d'espace.
Implémentation d'algorithmes optimisés pour limiter le temps de calcul et améliorer les performances globales.
Analyse méthodique de situations complexes et élaboration de solutions algorithmiques adaptées.