Implementation d'un besoin client

Explication de la SAE

Ce projet a pour objectif de développer un bot capable de jouer automatiquement au Démineur. Il analyse l’état du plateau pour prendre des décisions logiques, comme cliquer sur une case ou y placer un drapeau, en se basant sur les informations visibles. Le projet a été développé par étapes, avec plusieurs versions successives permettant d’améliorer la logique et la flexibilité du bot.


Outils utilisés

Exercice n°1

Réalisation d’un mini-labyrinthe en Java, où un objet (O) se déplace sur une grille chargée depuis un fichier (grille.data). L’objet ne peut ni sortir du plateau ni traverser les murs. J’ai implémenté une classe Labyrinthe permettant l’affichage de la grille et le déplacement selon les directions (N, S, E, O).

Exercice n°2

Extension du projet précédent avec l’ajout d’une sortie (@) et l’introduction de l’architecture MVC (Modèle-Vue-Contrôleur).

  • Modèle : la classe Labyrinthe gère les déplacements et détecte si l’objet atteint la sortie.
  • Vue : IhmCui prend en charge l’affichage et les saisies utilisateur.
  • Contrôleur : la classe Controleur fait le lien entre la vue et le modèle.

De plus nous avons fait l'ajout de méthodes d’accès sécurisées à la grille, tout en garantissant son intégrité (pas d’accès direct à la grille complète).

Exercice n°3

Pour cette troisième étape, j’ai intégré une interface graphique (GUI) à mon labyrinthe Java, permettant de contrôler l’objet via les flèches directionnelles.
En m’appuyant sur une fiche pédagogique fournie, j’ai conçu un contrôleur graphique basé sur la classe FrameGrille, et utilisé des images 30x30 pour représenter les éléments du labyrinthe.
Le modèle (Labyrinthe) n’a pas été modifié : l’interface se contente d’interagir via le contrôleur. Ce projet m’a initié à la conception d’interfaces graphiques en Java et à la gestion des événements clavier.

Exercice n°4

Dans cette dernière version, j’ai amélioré l’affichage du labyrinthe en distinguant visuellement les différents types de murs à l’aide d’images variées (40×40).
L’interprétation graphique est désormais gérée dans le contrôleur, qui détermine quelle image utiliser selon le voisinage de chaque mur.
Le modèle (Labyrinthe) reste inchangé, mais l’interface graphique devient plus immersive. J’ai également ajouté un compteur de déplacements visibles à l’écran. Ce projet m’a permis d’approfondir la séparation entre les couches métier et interface.