Module ComplementIA
Package logique

Class GrilleNavale

java.lang.Object
logique.GrilleNavale
Direct Known Subclasses:
GrilleNavaleGraphique

public class GrilleNavale extends Object
Gestion logique d'une grille de Bataille Navale. La grille contient une liste de navires placés et un ensemble de tirs reçus. Cette classe est indépendante de l'interface graphique et ne manipule que les données de domaine. La sous-classe `GrilleNavaleGraphique` ajoute le comportement d'affichage.
  • Field Details

    • taille

      protected final int taille
    • tirsRecus

      protected final Set<Coordonnee> tirsRecus
  • Constructor Details

    • GrilleNavale

      public GrilleNavale(int taille)
      Crée une grille carrée de la taille indiquée.
      Parameters:
      taille - dimension de la grille (nombre de lignes et de colonnes)
  • Method Details

    • getTaille

      public int getTaille()
    • estDansGrille

      public boolean estDansGrille(Coordonnee c)
      Vérifie si une coordonnée est dans les limites de la grille.
    • ajouteNavire

      public boolean ajouteNavire(Navire n)
      Ajoute un navire à la grille s'il ne dépasse pas les limites, ne chevauche pas un navire existant et ne touche pas (pas de navires adjacents). Retourne vrai si l'ajout a réussi.
    • placementAuto

      public void placementAuto(int[] taillesNavires)
      Place automatiquement une liste de navires aux tailles données. Chaque navire est positionné aléatoirement tant que les contraintes de placement sont respectées. Cette méthode garantit que tous les navires sont placés avant de retourner.
      Parameters:
      taillesNavires - tableau des longueurs des navires à placer
    • recoitTir

      public boolean recoitTir(Coordonnee c)
      Traite un tir sur la grille. Si la coordonnée a déjà été attaquée, retourne faux. Sinon, enregistre le tir et retourne vrai si un navire a été touché.
    • estALEau

      public boolean estALEau(Coordonnee c)
      Indique si la coordonnée est à l'eau (aucun navire ne l'occupe).
    • estTouche

      public boolean estTouche(Coordonnee c)
      Indique si un navire est touché à la coordonnée donnée.
    • estCoule

      public boolean estCoule(Coordonnee c)
      Indique si un navire contenant la coordonnée donnée est coulé.
    • perdu

      public boolean perdu()
      Indique si tous les navires de la grille ont été coulés.
    • getNavires

      public List<Navire> getNavires()
      Renvoie la liste des navires présents sur la grille. Utilisé par les composants d'interface pour le rendu.
    • aDejaTire

      public boolean aDejaTire(Coordonnee c)
      Indique si la coordonnée a déjà été attaquée. Utile pour les joueurs automatiques qui doivent éviter de répéter un tir.