import java.util.Scanner;
import java.io.*;

/**
 * Class Crossword : Creates a 2D array of characters read from the input file
 */

public class Crossword
{
   private char array[][]; 	// Tableaux 2D contenant les caractères
   private int rows;      	// Nombres de lignes de array 
   private int columns;		// Nombres de colonnes de array
   
   private int WordCount;   // Nombre d'occurences d'un mot
   private int PositionX;	// Colonne de début du mot
   private int PositionY;	// Ligne de début du mot
   private int EndX;		// Colonne de fin du mot 
   private int EndY;		// Ligne de fin du mot 
   
      
   /*** Constructor: Reads each line from File <file> and writes to a new row in the array. 
    ** Updates <rows> and <columns> to height and width of the array. */
   public Crossword(File file) throws IOException {

	   // Code pour calculer la taille du tableau et initialiser les variables d'instance "rows" et "columns"
	   
	   // Code pour créer le tableau "array"
	   
	   // Code pour remplir "array" avec les caractères du Fichier "file" 
	   
	   }

   
   /*** Methode Search(String) : Trouver le premier occurence du mot <word> dans le Tableau 
    *** Si touver, mettre à jour les valeurs (PositionY, PositionX, EndY, EndX)*/
   
   public boolean search(String word) {

	   // Verifier que le taile du mot "word" est supérieure à zero. Sinon rien à faire.
	   
	   // Chercher le premier caractère du mot "word" dans le tableau array. 
	   // Si array[i][j] contient ce caractère, alors le mot peut apparaître dans le même ligne, 
	   // ou dans le même colonne. Utiliser les methodes SearchRow() ou searchColumn() selon le cas.
	   
	   return false; // mot pas trouvé
   }
   
   /* Methode Interne SearchRow(int,int, String) : Cherche une ligne du tableaux pour le mot <word> à partir de array[y][x] */
   
   private boolean searchRow(int y, int x, String word) {

	   // Ecrire code ici  ...
	   return false;
   }
   
   /* Methode Interne SearchRow(int,int, String) : Cherche une colonne du tableaux pour le mot <word> à partir de array[y][x] */
   
   private boolean searchColumn(int y, int x, String word) {

	   // Ecrire code ici ...
	   return false;
   }

   /*** Methode pour visualiser le tableau. (Déjà fourni) */
   public void display() {
	   if (rows>0 && columns>0)
		   CrosswordGUI.display(array);  
	   else 
		   System.out.println("Error: Array is Empty.");
   }

   /*** Methode pour visualiser le tableau avec le mot en surbrillance. (Déjà fourni) */
   public void displayWord() {
		if ((PositionX<0) || (PositionX>EndX) || (EndX>=columns)) {
			System.out.println("Error: Incorrect x-coordinates for Word");
			return;
		}
		if ((PositionY<0) || (PositionY>EndY) || (EndY>=rows)) {
			System.out.println("Error: Incorrect y-coordinates for Word");
			return;		
		}
		CrosswordGUI.display(array, PositionY, PositionX, EndY, EndX);  
   }
   
}