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); } } }
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; }
public void AjouterObstacle(ASCase Case) { _obstacles.Add(Case); }
public void setStart(int pLigne, int pColonne) { _start = _map[pLigne,pColonne]; //_start.Contenu = ASCaseState.START; //_start.Visited = false; }
public void setEnd(int pLigne, int pColonne) { _end = _map[pLigne, pColonne]; //_end.Contenu = ASCaseState.END; //_end.Visited = false; }