コード例 #1
0
ファイル: HomeIA.cs プロジェクト: KiLMaN/LPIE_Robot_Color
        private void btn_test_Click(object sender, EventArgs e)
        {
            PositionElement pStart = new PositionElement();

            pStart.X = 30; pStart.Y = 550;

            PositionElement pEnd = new PositionElement();

            pEnd.X = 30; pEnd.Y = 30;

            PositionZoneTravail pZone = new PositionZoneTravail();

            pZone.A.X = 0;
            pZone.A.Y = 0;
            pZone.B.X = 800;
            pZone.B.Y = 600;


            //AStar astar = new AStar(pStart, pEnd, pZone);
            //Track tr =  astar.CalculerTrajectoire();


            Bitmap bitmap = new Bitmap(pZone.B.X, pZone.B.Y);

            //dessinerTrack(bitmap, tr.Positions);
            pictureBox1.Image = bitmap;

            /* Point c = new Point(pEnd.X, pEnd.Y);
             * dessinerPoint(bitmap, c, Brushes.Red);
             *
             * c = new Point(pStart.X, pStart.Y);
             * dessinerPoint(bitmap, c, Brushes.Green);*/
        }
コード例 #2
0
        /* Fonction zone de travail */
        private void UpdateTailleTerain(int x, int y)
        {
            PositionZoneTravail Pzt = new PositionZoneTravail();

            Pzt.A.X = 0;
            Pzt.A.Y = 0;
            Pzt.B.X = x;
            Pzt.B.Y = y;
            envoieListe(Pzt);
        }
コード例 #3
0
        private void envoieListe(PositionZoneTravail PositionTravail)
        {
            if (OnUpdatePositionZoneTravail == null)
            {
                return;
            }
            UpdatePositionZoneTravailEventArgs a = new UpdatePositionZoneTravailEventArgs(PositionTravail);

            OnUpdatePositionZoneTravail(this, a);
        }
コード例 #4
0
        public AStar(PositionElement Depart, PositionElement Arrivee, PositionZoneTravail ZoneTravail)
        {
            _open  = new SortedNodeList <ASCase>();
            _close = new NodeList <ASCase>();

            _UnitByCol = (float)Math.Abs(ZoneTravail.A.X - ZoneTravail.B.X) / _NumCol;
            _UnitByRow = (float)Math.Abs(ZoneTravail.A.Y - ZoneTravail.B.Y) / _NumRow;

            _map = new ASMap(_NumCol, _NumRow);

            ASCase Start = ConvertToCase(Depart);
            ASCase End   = ConvertToCase(Arrivee);

            _map.setStart(Start.Point.X, Start.Point.Y);
            _map.setEnd(End.Point.X, End.Point.Y);
        }
コード例 #5
0
ファイル: TrackMaker.cs プロジェクト: KiLMaN/LPIE_Robot_Color
 public void SetZoneTravail(PositionZoneTravail position)
 {
     this._ZoneTravail = position;
 }
コード例 #6
0
ファイル: Follower.cs プロジェクト: KiLMaN/LPIE_Robot_Color
 public void UpdatePositionZoneTravail(PositionZoneTravail Zone)
 {
     _bInfosZoneTravail = true;
     _TrackMaker.SetZoneTravail(Zone);
     tickIA();
 }
コード例 #7
0
ファイル: HomeIA.cs プロジェクト: KiLMaN/LPIE_Robot_Color
        private void pictureBox1_Click(object sender, MouseEventArgs e)
        {
            int abs = (e.Location.X * ((PictureBox)sender).Image.Width) / ((PictureBox)sender).Width;
            int ord = (e.Location.Y * ((PictureBox)sender).Image.Height) / ((PictureBox)sender).Height;

            //Logger.GlobalLogger.debug("ABS : " + abs + " ORD : " + ord);
            if (e.Button == MouseButtons.Left)
            {
                pEnd.X = abs;
                pEnd.Y = ord;
            }
            else if (e.Button == MouseButtons.Right)
            {
                pStart.X = abs;
                pStart.Y = ord;
            }
            else if (e.Button == MouseButtons.Middle)
            {
                PositionElement pObstacle = new PositionElement();
                pObstacle.X = abs;
                pObstacle.Y = ord;
                pAutre.Add(pObstacle);
            }


            PositionZoneTravail pZone = new PositionZoneTravail();

            pZone.A.X = 0;
            pZone.A.Y = 0;
            pZone.B.X = 800;
            pZone.B.Y = 600;


            astar = new AStar(pStart, pEnd, pZone);
            astar.AddObstacles(pAutre);

            DateTime dt1 = DateTime.Now;
            Track    tr  = astar.CalculerTrajectoire();
            DateTime dt2 = DateTime.Now;

            Logger.GlobalLogger.info("Temps calcul : " + (dt2 - dt1).Milliseconds);
            //Track tr = astar.CalculerTrajectoire();
            tr.nettoyerTrajectoire();
            List <QuadrillageCoord> quad = astar.CalculerQuadrillage();



            Bitmap bitmap = new Bitmap(pZone.B.X, pZone.B.Y);

            dessinerTrack(bitmap, tr);



            Point c = new Point(pEnd.X, pEnd.Y);

            //dessinerPoint(bitmap, c, Brushes.Red);
            dessinerRectangle(bitmap, astar.CalculerRectangle(pEnd), Brushes.Red);
            c = new Point(pStart.X, pStart.Y);
            //dessinerPoint(bitmap, c, Brushes.Green);

            dessinerRectangle(bitmap, astar.CalculerRectangle(pStart), Brushes.Green);
            foreach (PositionElement obstacle in pAutre)
            {
                dessinerRectangle(bitmap, astar.CalculerRectangle(obstacle), Brushes.Gray);
                //dessinerPoint(bitmap, c, Brushes.Gray);
            }
            foreach (QuadrillageCoord q in quad)
            {
                dessinerLigne(bitmap, q.A, q.B, Color.Gray, 1);
            }

            pictureBox1.Image = bitmap;
        }