Package ocean

Class Ocean

java.lang.Object
ocean.Ocean

public class Ocean extends Object
Encode la structure de l'océan
  • Field Details

    • noMark

      public static final Mark noMark
      Valeur représentant l'absence d'une marque
    • defaultMark

      public static final Mark defaultMark
      Valeur par défaut pour une marque

      À utiliser lorsqu'il n'y a pas besoin de stocker d'autre information que la présence d'une marque

    • name

      public final String name
      Le nom de la carte de l'océan (c'est-à-dire, du fichier la contenant)
  • Constructor Details

    • Ocean

      public Ocean(String name, String fileName, Direction[] directions) throws FileNotFoundException
      Récupère la carte de l'océan dans un fichier, laissant rapporteur à null
      Parameters:
      name - le nom de l'océan à créer
      fileName - le nom du fichier à lire
      directions - le tableau de toutes les directions possibles
      Throws:
      FileNotFoundException - si le fichier n'est pas accessible
    • Ocean

      public Ocean(String name, String fileName) throws FileNotFoundException
      Récupère la carte de l'océan dans un fichier, laissant rapporteur à null
      Parameters:
      name - le nom de l'océan à créer
      fileName - le nom du fichier à lire
      Throws:
      FileNotFoundException - si le fichier n'est pas accessible
  • Method Details

    • reporters

      public Ocean reporters()
      Initialise la liste de rapporteurs avec un seul élément — celui passé en argument
      Returns:
      la référence de l'océan afin de pourvoir enchaîner des ajouts de rapporteurs (voir add(OceanReporter))
    • add

      public Ocean add(OceanReporter reporter)
      Rajoute le rapporteur passé en argument dans la liste
      Parameters:
      reporter - la référence vers le rapporteur
      Returns:
      la référence de l'océan afin de pourvoir enchaîner des ajouts de rapporteurs (voir add(OceanReporter))
    • directions

      public Direction[] directions()
      Le tableau de toutes les directions disponibles
      Returns:
      une copie du tableau de toutes les directions
    • exploreUsing

      public boolean exploreUsing(Traversal traversal)
      Exploration de l'océan
      Parameters:
      traversal - algorithme d'exploration (Traversal est une classe abstraite qui représente un algorithme de parcours de l'océan. On peut implémenter autant qu'on veut de tels algorithmes en définissant des classes dérivées de Traversal.)
      Returns:
      true si Nemo a été retrouvé, false sinon
    • size

      public int size()
      Returns:
      la taille de l'océan
    • isValid

      public boolean isValid(Coordinate c)
      Est-ce que c est une case valide?
      Parameters:
      c - la cellule à tester
      Returns:
      true si les coordonnées c.x et c.y sont toutes les deux comprises entre 0 (inclu) et size (exclu), false sinon
    • isWall

      public boolean isWall(Coordinate c)
      Est-ce que c est un mur ?
      Parameters:
      c - la cellule à tester
      Returns:
      true si c est un mur, false sinon
      Throws:
      Error - si c n'est pas valide (voir isValid(Coordinate))
    • isThereASharkAt

      public boolean isThereASharkAt(Coordinate c)
      Est-ce qu'il y a un requin dans c ?
      Parameters:
      c - la cellule à tester
      Returns:
      true si c contient un requin, false sinon
      Throws:
      Error - si c n'est pas valide (voir isValid(Coordinate))
    • isNemoAt

      public boolean isNemoAt(Coordinate c)
      Est-ce que Nemo se trouve dans c ?
      Parameters:
      c - la cellule à tester
      Returns:
      true si Nemo se trouve dans c, false sinon
      Throws:
      Error - si c n'est pas valide (voir isValid(Coordinate))
    • isMarlinAt

      public boolean isMarlinAt(Coordinate c)
      Est-ce que Marin se trouve dans c ?
      Parameters:
      c - la cellule à tester
      Returns:
      true si Marin se trouve dans c, false sinon
      Throws:
      Error - si c n'est pas valide (voir isValid(Coordinate))
    • isMarked

      public boolean isMarked(Coordinate c)
      Est-ce que c comporte une marque quelconque ?
      Parameters:
      c - la cellule à tester
      Returns:
      true si c comporte une marque, false sinon
      Throws:
      Error - si c n'est pas valide (voir isValid(Coordinate))
    • getMark

      public Mark getMark(Coordinate c)
      La marque dans c
      Parameters:
      c - la cellule dont on souhaite récupérer la marque
      Returns:
      la marque qui se trouve dans c
      Throws:
      Error - si c n'est pas valide (voir isValid(Coordinate))
    • disableReports

      public boolean disableReports()
      Désactive tous les rapporteurs, mais leur donne une chance de bloquer cette action
      Returns:
      true si les rapporteurs sont bien désactivés
    • enableReports

      public boolean enableReports()
      Active tous les rapporteurs, mais leur donne une chance de bloquer cette action
      Returns:
      true si les rapporteurs sont bien activés
    • setMark

      public Mark setMark(Coordinate c, Mark mark)
      Pose la marque mark et notifie le rapporteur
      Parameters:
      c - la cellule où la marque doit être posée
      mark - la marque à poser
      Returns:
      la marque précédente qui se trouvait dans c auparavant
      Throws:
      Error - si c n'est pas valide (voir isValid(Coordinate))
    • setMark

      public Mark setMark(Coordinate c, int mark)
      Pose une marque de valeur mark et notifie le rapporteur
      Parameters:
      c - la cellule où la marque doit être posée
      mark - la marque à poser
      Returns:
      la marque précédente qui se trouvait dans c auparavant
      Throws:
      Error - si c n'est pas valide (voir isValid(Coordinate))
    • setMark

      public Mark setMark(Coordinate c)
      Pose la marque par défaut (defaultMark) et notifie le rapporteur
      Parameters:
      c - la cellule où la marque doit être posée
      Returns:
      la marque précédente qui se trouvait dans c auparavant
      Throws:
      Error - si c n'est pas valide (voir isValid(Coordinate))
    • unMark

      public Mark unMark(Coordinate c)
      Enlève la marque et notifie le rapporteur
      Parameters:
      c - la cellule où la marque doit être posée
      Returns:
      la marque enlevée
      Throws:
      Error - si c n'est pas valide (voir isValid(Coordinate))
    • toString

      public String toString()
      Crée une chaîne de caractères avec la carte de l'océan
      Overrides:
      toString in class Object