public List <CheminMathias> Chemin(int debutX, int debutY, int finX, int finY)
    {
        //Debug.Log(finX);
        //Debug.Log(finY);
        CheminMathias caseDebut = grille.GetGridObject(debutX, debutY);
        CheminMathias caseFin   = grille.GetGridObject(finX, finY);

        listeOuverte = new List <CheminMathias>()
        {
            caseDebut
        };
        listeFermee = new List <CheminMathias>();

        for (int x = 0; x < grille.GetLargueur(); x++)
        {
            for (int y = 0; y < grille.GetHauteur(); y++)
            {
                CheminMathias pathNode = grille.GetGridObject(x, y);
                pathNode.g = int.MaxValue;
                pathNode.CalculerF();
                pathNode.casePrecedente = null;
            }
        }

        caseDebut.g = 0;
        caseDebut.h = CalculerH(caseDebut, caseFin);
        caseDebut.CalculerF();

        while (listeOuverte.Count > 0)
        {
            CheminMathias caseActuelle = FPlusBas(listeOuverte);

            if (caseActuelle == caseFin)
            {
                return(CalculerChemin(caseFin));
            }

            listeOuverte.Remove(caseActuelle);
            listeFermee.Add(caseActuelle);



            foreach (CheminMathias caseVoisine in GetListeVoisins(caseActuelle))
            {
                if (listeFermee.Contains(caseVoisine))
                {
                    continue;
                }

                //Debug.Log(caseVoisine);

                int gTemp = caseActuelle.g + CalculerH(caseActuelle, caseVoisine);

                if (gTemp < caseVoisine.g)
                {
                    caseVoisine.casePrecedente = caseActuelle;
                    caseVoisine.g = gTemp;
                    caseVoisine.h = CalculerH(caseVoisine, caseFin);
                    caseVoisine.CalculerF();

                    if (!listeOuverte.Contains(caseVoisine))
                    {
                        listeOuverte.Add(caseVoisine);
                    }
                }
            }
        }

        return(null);
    }