Пример #1
0
        private void setGrilleView()// Dessine les cases de la grille
        {
            tabForme = new FormeRectangle[25, 25];
            string color = "";

            if (tabEntrepot == null)
            {
                tabEntrepot = GenericNode.InitialiserEntrepot();
            }
            else
            {
                for (int i = 0; i < tabEntrepot.GetLength(0); i++)// On récupère tout les éléments du tableau et suivant les valeurs passées dans GenericNode.InitialiserEntrepot on définit la couleur correspondante à la case.
                {
                    for (int j = 0; j < tabEntrepot.GetLength(1); j++)
                    {
                        int positionX = 25 + i * 25;
                        int positionY = 25 + j * 25;
                        int value     = tabEntrepot[i, j];
                        switch (value)
                        {
                        case 0:
                            color = "white";
                            break;

                        case -1:
                            color = "blue";
                            break;

                        case -2:
                            color = "green";
                            break;
                        }
                        FormeRectangle r = new FormeRectangle(color, positionX, positionY);
                        tabForme[i, j] = r;
                    }
                }
            }
        }
Пример #2
0
        public static void creationFormeColorée(FormeRectangle f, Form form) // la mettre dans la classe forme et la généraliser avec celle de perception
        {
            int        largeur     = 25;
            int        hauteur     = 25;
            SolidBrush blueBrush   = new SolidBrush(Color.Blue);
            SolidBrush whiteBrush  = new SolidBrush(Color.White);
            SolidBrush greenBrush  = new SolidBrush(Color.Green);
            SolidBrush blackBrush  = new SolidBrush(Color.Black);
            SolidBrush orangebrush = new SolidBrush(Color.Orange);
            SolidBrush redbrush    = new SolidBrush(Color.Red);
            SolidBrush purplebrush = new SolidBrush(Color.Purple);

            Pen blackPen = new Pen(Brushes.Black);

            blackPen.Width = 1.0F;

            Graphics formGraphics = form.CreateGraphics();

            Rectangle rect = new Rectangle(f.positionX, f.positionY, largeur, hauteur);

            int l  = Convert.ToInt32(Math.Round(0.5 * largeur));
            int h  = Convert.ToInt32(Math.Round(0.5 * hauteur));
            int lx = Convert.ToInt32(Math.Round(0.25 * largeur));
            int hy = Convert.ToInt32(Math.Round(0.25 * hauteur));

            Rectangle rectPetit = new Rectangle(f.positionX + lx, f.positionY + hy, l, h);

            switch (f.couleur)
            {
            case "blue":


                formGraphics.FillRectangle(blueBrush, rect);
                formGraphics.DrawRectangle(blackPen, rect);
                blueBrush.Dispose();
                formGraphics.Dispose();
                break;

            case "white":

                formGraphics.FillRectangle(whiteBrush, rect);
                formGraphics.DrawRectangle(blackPen, rect);
                whiteBrush.Dispose();
                formGraphics.Dispose();
                break;

            case "green":
                formGraphics.FillRectangle(greenBrush, rect);
                formGraphics.DrawRectangle(blackPen, rect);
                greenBrush.Dispose();
                formGraphics.Dispose();
                break;

            case "black":
                formGraphics.FillRectangle(blackBrush, rect);
                formGraphics.DrawRectangle(blackPen, rect);
                blackBrush.Dispose();
                formGraphics.Dispose();
                break;

            case "orange":
                formGraphics.FillRectangle(orangebrush, rect);
                formGraphics.DrawRectangle(blackPen, rect);
                orangebrush.Dispose();
                formGraphics.Dispose();
                break;

            case "red":
                formGraphics.FillEllipse(redbrush, rect);
                formGraphics.DrawEllipse(blackPen, rect);
                redbrush.Dispose();
                formGraphics.Dispose();
                break;

            case "purple":
                formGraphics.FillEllipse(purplebrush, rectPetit);
                formGraphics.DrawEllipse(blackPen, rectPetit);
                purplebrush.Dispose();
                formGraphics.Dispose();
                break;
            }
        }
Пример #3
0
        protected override void OnPaint(PaintEventArgs e) // fonction dessinant l'ensemble de la grille et des chemins parcourus par le chariot
        {
            base.OnPaint(e);
            if (tabForme != null)
            {
                for (int i = 0; i < tabEntrepot.GetLength(0); i++)//Pour toute les formes dans tabForme
                {
                    for (int j = 0; j < tabEntrepot.GetLength(1); j++)
                    {
                        FormeRectangle.creationFormeColorée(tabForme[i, j], this);//On dessine la forme avec sa taille et sa couleur passée au préalable dans setGrilleView()
                    }
                }
                foreach (Chariot c in tabChariot)//Pour tout les chariots on les dessine sur la grille
                {
                    int            positionX = 25 * c.posX;
                    int            positionY = 25 * c.posY;
                    FormeRectangle chariot   = new FormeRectangle("black", positionX, positionY);//Un chariot est un carré noir sur la grille.
                    FormeRectangle.creationFormeColorée(chariot, this);
                }
                foreach (Objet o in tabObjet)//Pour tout les objets on les dessine sur la grille
                {
                    int            positionX = 25 * o.posX;
                    int            positionY = 25 * o.posY;
                    FormeRectangle objet     = new FormeRectangle("orange", positionX, positionY);// Un objet est un carré orange sur la grille
                    FormeRectangle.creationFormeColorée(objet, this);
                }
                // Colorie le chemin du noeud initial jusqu'à l'objet

                if (Lres != null)
                {
                    foreach (GenericNode n in Lres)
                    {
                        int positionX = 0;
                        int positionY = 0;
                        if (nodeTemps)    // Si on gère des nodeTemps ou des NodeDistance
                        {
                            NodeTemps node = (NodeTemps)n;
                            positionX = 25 + 25 * node.posX;
                            positionY = 25 + 25 * node.posY;
                        }
                        else
                        {
                            NodeDistance node = (NodeDistance)n;
                            positionX = 25 + 25 * node.posX;
                            positionY = 25 + 25 * node.posY;
                        }


                        FormeRectangle objet = new FormeRectangle("red", positionX, positionY);    //colorie la case de la grille correspondnat à chaque noeud en rouge; le chemin suivi par le chariot apparait tout en rouge
                        FormeRectangle.creationFormeColorée(objet, this);
                        //}
                    }

                    //Colore le chemin retour : de l'objet à une des cases 1 la plus proche de la grille
                    if (bestTrajectoire != null)
                    {
                        foreach (GenericNode n in bestTrajectoire)
                        {
                            int positionX = 0;
                            int positionY = 0;
                            if (nodeTemps)
                            {
                                NodeTemps node = (NodeTemps)n;
                                positionX = 25 + 25 * node.posX;
                                positionY = 25 + 25 * node.posY;
                            }
                            else
                            {
                                NodeDistance node = (NodeDistance)n;
                                positionX = 25 + 25 * node.posX;
                                positionY = 25 + 25 * node.posY;
                            }
                            FormeRectangle objet = new FormeRectangle("purple", positionX, positionY);
                            FormeRectangle.creationFormeColorée(objet, this);
                        }
                    }
                }
            }
        }