Esempio n. 1
0
 public ASMap(int lignes,int colonnes)
 {
     _map = new ASCase[lignes,colonnes];
     _lignes = lignes;
     _colonnes = colonnes;
     _obstacles = new List<ASCase>();
     // Intialisation des indexs
     for (int x = 0; x < lignes; x++)
     {
         for (int y = 0; y < colonnes; y++)
         {
             _map[x, y] = new ASCase(x,y);
         }
     }
 }
Esempio n. 2
0
        public List<ASCase> getAdjCase(ASCase current,bool bdiagonales = false)
        {
            List<ASCase> list = new List<ASCase>();
            ASPoint Point = new ASPoint();

            // Haut
            Point.X = current.Point.X;
            Point.Y = current.Point.Y + 1;
            if (inMap(Point) && NearMovementFree(Point))
            {
               ASCase Case =  new ASCase(Point.Clone(), current);
               Case.CalculH(_end);
               Case.G = current.G + 1;
               list.Add(Case);
            }

            // Droite
            Point.X = current.Point.X +1;
            Point.Y = current.Point.Y;
            if (inMap(Point) && NearMovementFree(Point))
            {
                ASCase Case = new ASCase(Point.Clone(), current);
                Case.CalculH(_end);
                Case.G = current.G + 1;
                list.Add(Case);
            }

            // Gauche
            Point.X = current.Point.X -1 ;
            Point.Y = current.Point.Y;
            if (inMap(Point) && NearMovementFree(Point))
            {
                ASCase Case = new ASCase(Point.Clone(), current);
                Case.CalculH(_end);
                Case.G = current.G + 1;
                list.Add(Case);
            }

            // Bas
            Point.X = current.Point.X ;
            Point.Y = current.Point.Y -1;
            if (inMap(Point) && NearMovementFree(Point))
            {
                ASCase Case = new ASCase(Point.Clone(), current);
                Case.CalculH(_end);
                Case.G = current.G + 1;
                list.Add(Case);
            }

            if (bdiagonales)
            {
                // Haut gauche
                Point.X = current.Point.X - 1 ;
                Point.Y = current.Point.Y + 1;
                if (inMap(Point) && MovementFree(Point))
                {
                    ASCase Case = new ASCase(Point.Clone(), current);
                    Case.CalculH(_end);
                    Case.G = current.G +2;
                    list.Add(Case);
                }

                // Haut Droite
                Point.X = current.Point.X + 1;
                Point.Y = current.Point.Y + 1;
                if (inMap(Point) && MovementFree(Point))
                {
                    ASCase Case = new ASCase(Point.Clone(), current);
                    Case.CalculH(_end);
                    Case.G = current.G + 2;
                    list.Add(Case);
                }

                // Bas Gauche
                Point.X = current.Point.X - 1;
                Point.Y = current.Point.Y - 1;
                if (inMap(Point) && MovementFree(Point))
                {
                    ASCase Case = new ASCase(Point.Clone(), current);
                    Case.CalculH(_end);
                    Case.G = current.G + 2;
                    list.Add(Case);
                }

                // Bas Droite
                Point.X = current.Point.X + 1 ;
                Point.Y = current.Point.Y - 1;
                if (inMap(Point) && MovementFree(Point))
                {
                    ASCase Case = new ASCase(Point.Clone(), current);
                    Case.CalculH(_end);
                    Case.G = current.G + 2;
                    list.Add(Case);
                }
            }

            return list;
        }
Esempio n. 3
0
 public void AjouterObstacle(ASCase Case)
 {
     _obstacles.Add(Case);
 }
Esempio n. 4
0
 public void setStart(int pLigne, int pColonne)
 {
     _start = _map[pLigne,pColonne];
     //_start.Contenu = ASCaseState.START;
     //_start.Visited = false;
 }
Esempio n. 5
0
 public void setEnd(int pLigne, int pColonne)
 {
     _end = _map[pLigne, pColonne];
     //_end.Contenu = ASCaseState.END;
     //_end.Visited = false;
 }