コード例 #1
0
        protected override void DistribuerZones()
        {
            var link = new LinkCaseToZone();
            for (int i = 0; i < GameManager.Longueur; ++i)
            {
                for (int j = 0; j < GameManager.Largeur; ++j)
                {
                    if (i < GameManager.Longueur/2)
                    {
                        if (j < GameManager.Largeur/3)
                        {
                            // ZONE DEHORS
                            var coor = new Coordonnees(i, j);
                            ZoneExterne.AjouterCase(coor);
                            link.LinkObject(coor, ZoneExterne, Simulation.Tableau);

                        }
                        else if (j < (3*GameManager.Largeur/4))
                        {
                            // CAISSES CLIENTS
                            var coor = new Coordonnees(i, j);
                            CaissesClient.AjouterCase(coor);
                            link.LinkObject(coor, CaissesClient, Simulation.Tableau);
                        }
                        else
                        {
                            // CAISSES CUISTOTS
                            var coor = new Coordonnees(i, j);
                            CaissesCuistots.AjouterCase(coor);
                            link.LinkObject(coor, CaissesCuistots, Simulation.Tableau);
                        }

                    }
                    else
                    {
                        if (j < GameManager.Largeur/3)
                        {
                            // ZONE EXTERNE
                            var coor = new Coordonnees(i, j);
                            ZoneExterne.AjouterCase(coor);
                            link.LinkObject(coor, ZoneExterne, Simulation.Tableau);
                        }
                        else
                        {
                            // ZONE REPAS
                            var coor = new Coordonnees(i, j);
                            ZoneRepas.AjouterCase(coor);
                            link.LinkObject(coor, ZoneRepas, Simulation.Tableau);
                        }
                    }

                }
            }
        }
コード例 #2
0
 private List<ArrayList> RecupererChemins(Grille grille,Coordonnees casedepart, List<ObjetAbstrait> objets)
 {
     if(grille == null) throw new NullReferenceException("La grille renseignée est nulle !");
     var list = new List<ArrayList>();
     foreach (var obj in objets)
     {
         var chemin = grille.Route(casedepart, obj.Case);
         grille.ReinitialiserMinDistances();
         list.Add(chemin);
     }
     return list;
     //return objets.Select(obj => grille.Route(casedepart, obj.Case)).ToList();
 }
コード例 #3
0
 public void LinkObject(Coordonnees coor, SujetObserveAbstrait obj, Grille grille)
 {
     if (coor == null) return;
     if (!coor.EstValide()) return;
     if(grille == null) return;
     if (TestNullObject(obj)) return;
     var node = GetNode(coor,grille);
     if (node == null)
     {
         Console.WriteLine("LinkCaseToZone: Impossible de récupérer une node viable en " + coor);
         return;
     }
     AttachObjectToCase(node, obj);
     AttachCaseToObject(node, obj);
 }
コード例 #4
0
ファイル: Bee.cs プロジェクト: tibow91/MetaSimulatorConsole
 public Bee(string nom,Coordonnees coor)
     : base("Abeille", EGame.Honeyland, new TextureBee())
 {
     SetCoordonnees(coor);
     Etat = new Etat_Free();
 }
コード例 #5
0
        private void MyMap_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            Point mouseLeftButtonUpPosition = new Point(e.GetPosition(MyMap).X, e.GetPosition(MyMap).Y);

            if (mouseLeftButtonUpPosition == MouseLeftButtonDownPoisition)   // OnClick
            {
                switch (EditMode)
                {
                case EditModes.Select:
                    bool elementSelected = false;
                    for (int i = MapData.ICartoObjs.Count() - 1; i >= 0; i--)       // Reverse loop because the last element is the first showed on screen
                    {
                        Point clickPoint = e.GetPosition(MyMap);
                        MyMap.TryViewportPointToLocation(clickPoint, out Location clickLocation);
                        Coordonnees clickCoordonnees = new Coordonnees(clickLocation.Latitude, clickLocation.Longitude);
                        CartoObj    cartoObj         = MapData.ICartoObjs[i] as CartoObj;
                        if (cartoObj.IsPointClose(clickCoordonnees, _PRECISION))
                        {
                            elementSelected = true;
                            LbCartographyObjects.SelectedItem = MapData.ICartoObjs[i];
                            LbCartographyObjects.ScrollIntoView(MapData.ICartoObjs[i]);
                            break;
                        }
                    }
                    if (!elementSelected)
                    {
                        LbCartographyObjects.SelectedItem = null;
                    }
                    break;

                case EditModes.Add:
                    Location ClickLocation;
                    MyMap.TryViewportPointToLocation(e.GetPosition(MyMap), out ClickLocation);
                    switch (CbType.SelectedIndex)
                    {
                    case 0:         // Point of interest
                        AddPushpin(ClickLocation);
                        break;

                    case 1:         // Travel
                        AddPointToTravel(ClickLocation);
                        break;

                    case 2:         // Surface
                        AddPointToSurface(ClickLocation);
                        break;
                    }
                    UpdateLbCartographyObjectsItemsSource();
                    break;

                case EditModes.Remove:
                    bool      somethingToRemove = false;
                    ICartoObj toRemove          = new POI();                  // Default value
                    for (int i = MapData.ICartoObjs.Count() - 1; i >= 0; i--) // Reverse loop because the last element is the first showed on screen
                    {
                        ICartoObj iCartoObj  = MapData.ICartoObjs[i];
                        Point     clickPoint = e.GetPosition(MyMap);
                        MyMap.TryViewportPointToLocation(clickPoint, out Location clickLocation);
                        Coordonnees clickCoordonnees = new Coordonnees(clickLocation.Latitude, clickLocation.Longitude);
                        CartoObj    cartoObj         = iCartoObj as CartoObj;
                        if (cartoObj.IsPointClose(clickCoordonnees, _PRECISION))
                        {
                            somethingToRemove = true;
                            toRemove          = iCartoObj;
                            UIElement uiElement = (UIElement)(iCartoObj.Tag);
                            MyMap.Children.Remove(uiElement);
                            UpdateLbCartographyObjectsItemsSource();
                            break;
                        }
                    }
                    if (somethingToRemove)
                    {
                        MapData.Remove(toRemove);
                    }
                    break;

                case EditModes.Update:
                    bool      somethingToUpdate = false;
                    ICartoObj toUpdate          = new POI();                  // Default value
                    for (int i = MapData.ICartoObjs.Count() - 1; i >= 0; i--) // Reverse loop because the last element is the first showed on screen
                    {
                        ICartoObj iCartoObj  = MapData.ICartoObjs[i];
                        Point     clickPoint = e.GetPosition(MyMap);
                        MyMap.TryViewportPointToLocation(clickPoint, out Location clickLocation);
                        Coordonnees clickCoordonnees = new Coordonnees(clickLocation.Latitude, clickLocation.Longitude);
                        CartoObj    cartoObj         = iCartoObj as CartoObj;
                        if (cartoObj.IsPointClose(clickCoordonnees, _PRECISION))
                        {
                            somethingToUpdate = true;
                            toUpdate          = iCartoObj;
                            break;
                        }
                    }
                    if (somethingToUpdate)
                    {
                        UpdateWindow updateWindow = new UpdateWindow(toUpdate);
                        updateWindow.send = UpdateMapAndListBox;
                        updateWindow.Show();
                    }
                    UpdateLbCartographyObjectsItemsSource();
                    break;
                }
            }
            else     // OnDrag
            // Nothing
            {
            }
        }
コード例 #6
0
        static void Main(string[] args)
        {
            //Constructeur par defaut
            Coordonnees c1     = new Coordonnees();
            POI         poi1   = new POI();
            Polyline    PolyL1 = new Polyline();
            Polygon     PolyG1 = new Polygon();

            //Constructeur d'initialisation
            Coordonnees c2 = new Coordonnees(2, 2);
            Coordonnees c3 = new Coordonnees(4, -2);
            Coordonnees c4 = new Coordonnees(1, -5);
            Coordonnees c5 = new Coordonnees(-3, 0);
            Coordonnees c6 = new Coordonnees(5, 5);

            POI poi2 = new POI("Magnée", c3);

            Coordonnees[] tab1   = { new Coordonnees(2, 0), new Coordonnees(-4, 0), new Coordonnees(-4, -4) };
            Coordonnees[] tab2   = { c3, c2, c4, c5, c6 };
            Coordonnees[] tab3   = { new Coordonnees(3, 3), new Coordonnees(3, 8), new Coordonnees(2, 8) };
            Coordonnees[] tab4   = { new Coordonnees(-3, 3), new Coordonnees(0, 5), new Coordonnees(5, 2), new Coordonnees(2, -4), new Coordonnees(-2, -3) };
            Coordonnees[] tabref = { new Coordonnees(0, 0), new Coordonnees(6, 0) };

            Polyline PolyL2 = new Polyline(tab1, Colors.Blue, 10);
            Polygon  PolyG2 = new Polygon(tab2, Colors.Lime, Colors.Aqua, 1);

            Polyline pol1      = new Polyline(tab1, Colors.Azure, 5);
            Polyline pol2      = new Polyline(tab2, Colors.CornflowerBlue, 2);
            Polyline pol3      = new Polyline(tab3, Colors.Coral, 7);
            Polyline pol4      = new Polyline(tab4, Colors.DarkRed, 9);
            Polyline Reference = new Polyline(tabref, Colors.DarkBlue, 2);

            MyPolylineBoundingBoxComparer pcomp = new MyPolylineBoundingBoxComparer();
            CartoObjComparer ocomp = new CartoObjComparer();

            //Liste générique
            List <CartoObj> cartoObj = new List <CartoObj>()
            {
                c1,
                c2,
                poi1,
                poi2,
                PolyL1,
                PolyL2,
                PolyG1,
                PolyG2
            };

            List <Polyline> polyline = new List <Polyline>()
            {
                pol1,
                pol2,
                pol3,
                pol4
            };

            Console.WriteLine("==============================================");
            Console.WriteLine("------ c1 (Cpd) ---------");
            Console.WriteLine(c1);
            Console.WriteLine("------ poi1 (Cpd) -------");
            Console.WriteLine(poi1);

            Console.WriteLine("\n==============================================");
            Console.WriteLine("------ c2 (Cinit) -------");
            Console.WriteLine(c2);
            Console.WriteLine("------ poi2 (Cinit) -----");
            Console.WriteLine(poi2);

            Console.WriteLine("\n==============================================");
            Console.WriteLine("------ PolyL1 (Cpd) -----");
            PolyL1.Draw();
            Console.WriteLine("\n------ PolyG1 (Cpd) -----");
            PolyG1.Draw();

            Console.WriteLine("\n==============================================");
            Console.WriteLine("------ PolyL2 (Cinit) -----");
            PolyL2.Draw();
            Console.WriteLine("\n------ PolyG2 (Cinit) -----");
            PolyG2.Draw();

            Console.WriteLine("\n==============================================");
            Console.WriteLine("\nc1 IsPointClose c2");
            Console.WriteLine("---> " + c1.IsPointClose(new Coordonnees(1, 6), 6));

            Console.WriteLine("\npoi1 IsPointClose poi2");
            Console.WriteLine("---> " + poi1.IsPointClose(poi2, 4.9));

            Console.WriteLine("\nPolyline IsPointClose c");
            Console.WriteLine("---> " + PolyL2.IsPointClose(new Coordonnees(-3, -4), 1.1));

            Console.WriteLine("\nPolygon IsPointClose c");
            Console.WriteLine("---> " + PolyG2.IsPointClose(new Coordonnees(-3, 3), 0));

            Console.WriteLine("\nNbrPoint PolyLline");
            Console.WriteLine("---> " + PolyL2.GetNumberOfPoint());

            Console.WriteLine("\nNbrPoint Polygon");
            Console.WriteLine("---> " + PolyG2.GetNumberOfPoint());

            Console.WriteLine("\n==============================================");
            Console.WriteLine("\nAffichage de la liste générique de CartoObj\n");
            foreach (CartoObj c in cartoObj)
            {
                c.Draw();
            }

            Console.WriteLine("\n==============================================");
            Console.WriteLine("\nAffichage des CartoObj IPointy\n");
            foreach (CartoObj c in cartoObj)
            {
                if (c is IPointy)
                {
                    c.Draw();
                    Console.WriteLine("-----> is Ipointy\n");
                }
            }

            Console.WriteLine("\n==============================================");
            Console.WriteLine("\nAffichage des CartoObj qui ne sont pas IPointy\n");
            foreach (CartoObj c in cartoObj)
            {
                if (!(c is IPointy))
                {
                    Console.WriteLine(c + " is not Ipointy");
                }
            }

            Console.WriteLine("\n==============================================");
            Console.WriteLine("\nAffichage de la liste générique de polyline\n");
            foreach (Polyline p in polyline)
            {
                p.Draw();
                Console.WriteLine("Longueur du Polyline = " + MathUtile.Longueur(p.Collection) + "\n");
            }

            Console.WriteLine("\n==============================================");
            Console.WriteLine("\nAffichage des polyline trier par ordre de longueur\n");
            polyline.Sort();
            foreach (Polyline p in polyline)
            {
                p.Draw();
                Console.WriteLine("Longueur du Polyline = " + MathUtile.Longueur(p.Collection) + "\n");
            }

            Console.WriteLine("\n==============================================");
            Console.WriteLine("\nAffichage des polyline trier par ordre de surface de BoundingBox\n");
            polyline.Sort(pcomp);
            foreach (Polyline p in polyline)
            {
                p.Draw();
                Console.WriteLine("Surface de la BoundingBox = " + p.PolylineBoundingBox() + "\n");
            }

            Console.WriteLine("\n==============================================");
            Console.WriteLine("\nRecherche si une liste de Polyline contient un polyline de même longueur qu'un polyline de reference\n");
            double longueur = MathUtile.Longueur(Reference.Collection);

            Polyline res = polyline.Find(x => MathUtile.Longueur(x.Collection) == longueur);

            if (res == null)
            {
                Console.WriteLine("Aucune Polyline trouver");
            }
            else
            {
                Console.WriteLine("Longueur polyline de reference = " + longueur);
                Console.WriteLine("Longueur polyline trouver = " + MathUtile.Longueur(res.Collection));
                res.Draw();
            }

            Console.WriteLine("\n==============================================");
            Console.WriteLine("\nAffichage des polyline qui sont proche d'un point\n");
            int cpt = 0;

            foreach (Polyline p in polyline)
            {
                if ((p.IsPointClose(new Coordonnees(0, 0), 1)) == true)
                {
                    Console.WriteLine("Ce polyline est proche du point");
                    p.Draw();
                    cpt++;
                }
            }
            if (cpt == 0)
            {
                Console.WriteLine("Aucun Polyline n'est proche du point...");
            }

            Console.WriteLine("\n==============================================");
            Console.WriteLine("\nAffichage d'une liste de CartoObj trier par nombre de point\n");
            cartoObj.Sort(ocomp);
            foreach (CartoObj c in cartoObj)
            {
                c.Draw();
                Console.WriteLine("Nombre de point -------> " + c.NbrPointCarto() + "\n");
            }

            Console.ReadKey();
        }
コード例 #7
0
 public Caisse(string nom, Coordonnees coor)
     : base(nom, EGame.AgeOfKebab, new TextureDollar3D())
 {
     SetCoordonnees(coor);
 }
コード例 #8
0
 public Bee(string nom, Coordonnees coor)
     : base("Abeille", EGame.Honeyland, new TextureBee())
 {
     SetCoordonnees(coor);
     Etat = new Etat_Free();
 }
コード例 #9
0
 public GatherPoint(EGame nomdujeu, Coordonnees coor)
     : base("Point de rassemblement générique", nomdujeu, new TextureFootIcon())
 {
     SetCoordonnees(coor);
 }
コード例 #10
0
        public List<Coordonnees> FindAjacentOfZone(Coordonnees coor, ZoneFinale zone)
        {
            List<Coordonnees> list = new List<Coordonnees>();
            if (zone == null) return list;
            if (coor == null || !coor.EstValide()) return list;

            foreach (var adj in Coordonnees.ObtenirCasesAdjacentes(coor))
            {
                if(zone.ContientCoordonnees(adj)) list.Add(adj);
            }
            return list;
        }
コード例 #11
0
 public IEnumerable <ISecteur> Secteurs(Coordonnees position, double distance)
 {
     return(new List <ISecteur>());
 }
コード例 #12
0
 public Node(Coordonnees coor)
     : base(coor.ToString())
 {
     Coor = coor;
 }
コード例 #13
0
ファイル: Program.cs プロジェクト: DidrichtGaetan/Gaetan
        public static void Main(string[] args)
        {
            Console.WriteLine("************COORDONNEES************\n");
            Coordonnees A = new Coordonnees(40.25, 48.25);
            Coordonnees B = new Coordonnees(2.25, 12.25);
            Coordonnees C = new Coordonnees(3.45, 50.45);
            Coordonnees D = new Coordonnees(3.25, 10.45);
            Coordonnees Z = new Coordonnees(5.2, 11);

            A.latitude = 41.2;
            Console.WriteLine(A.ToString());
            Console.WriteLine(C.ToString());

            Console.WriteLine("\n**************POI**************\n");
            POI E = new POI();
            POI F = new POI("ici", 25.2, 1.25);
            POI Y = new POI("ok", 14, 2);


            Console.WriteLine(E.ToString());
            Console.WriteLine(F.ToString());

            Console.WriteLine("\n**************** Polyline******************\n");

            Polyline Poly1 = new Polyline(new List <Coordonnees>()
            {
                A, D, Y
            }, 10, Color.FromArgb(255, 255, 255, 255), 1);
            Polyline Poly2 = new Polyline(new List <Coordonnees>()
            {
                E, F
            }, 15, Color.FromArgb(0, 0, 0, 0), 1);
            Polyline Poly3 = new Polyline(new List <Coordonnees>()
            {
                Z, A
            }, 11, Color.FromArgb(254, 0, 211, 0), 0);
            Polyline Poly4 = new Polyline(new List <Coordonnees>()
            {
                Z, B
            }, 11, Color.FromArgb(254, 158, 251, 0), 0);

            Console.WriteLine(Poly1.ToString());
            Console.WriteLine(Poly2.ToString());

            Console.WriteLine("\n**************Polygone**********************\n");
            Polygone Polygone = new Polygone(new List <Coordonnees>()
            {
                A, D, E
            }, Color.FromArgb(165, 187, 195, 0), Color.FromArgb(165, 200, 140, 165), 1, 1);
            Polygone P5 = new Polygone();

            Console.WriteLine(Polygone.ToString());

            Console.WriteLine(P5.ToString());



            Console.WriteLine("\n******************Liste CartObj********************\n");
            List <CartoObj> ListeCart = new List <CartoObj>();

            ListeCart.Add(A);
            ListeCart.Add(E);
            ListeCart.Add(F);
            ListeCart.Add(Poly1);
            ListeCart.Add(Poly2);

            //Afficher la liste
            ListeCart.ForEach(item => Console.WriteLine(item));

            //Afficher ceux qui utilise ipointy
            Console.Write("\n****************On affiche ceux qui utilise IPOINTY*************\n");
            foreach (CartoObj item in ListeCart)
            {
                if (!(item  is IPointy))
                {
                    item.Draw();
                }
            }

            Console.Write("\n****************On affiche ceux qui n'utilise pas IPOINTY*************\n");
            foreach (CartoObj item in ListeCart)
            {
                if (item is IPointy)
                {
                    item.Draw();
                }
            }


            Console.WriteLine("\n****************Cree une liste de 5 polyline***********************\n");
            List <Polyline> Polyliste = new List <Polyline>();

            Polyliste.Add(Poly1);
            Polyliste.Add(Poly2);
            Polyliste.Add(Poly3);
            Polyliste.Add(Poly4);

            foreach (Polyline item in Polyliste)
            {
                Console.WriteLine(item.ToString());
            }

            Polyliste.Sort();

            Console.WriteLine("\n*************************** On Affiche la liste polyline triee -> longueur********************");
            foreach (Polyline item in Polyliste)
            {
                Console.WriteLine(item.ToString());
            }

            Console.WriteLine("\n*************************** On Affiche la liste polyline triee -> AIR Box********************");

            MyPolylineBoundingBoxComparer Compare = new MyPolylineBoundingBoxComparer();

            Polyliste.Sort(Compare);
            foreach (Polyline item in Polyliste)
            {
                Console.WriteLine(item.ToString());
            }


            Console.WriteLine("\n******************Nombre de point Different Dans poly 1 :    **************************");
            int point = Poly1.NbPoints;

            Console.WriteLine("il y a : " + point + "point(s) différent");

            Console.WriteLine("\n**************** Utilisation de IPointCLose*************");
            Polyline P = Polyliste.Find(i => i.IsPointClose(25.2, 71, 1) == 1); //recherche dans la liste un element qui correspont

            if (P == null)                                                      // il ne sera pas proche
            {
                Console.WriteLine("Le point n'est pas proche.");
            }
            else
            {
                Console.WriteLine("Le point est proche ===>");
                P.Draw();
            }

            Polyline P2 = Polyliste.Find(i => i.IsPointClose(41.2, 48, 1) == 1); //recherche dans la liste un element qui correspont

            if (P2 == null)                                                      // il sera proche de la coordonnee A
            {
                Console.WriteLine("Le point n'est pas proche.");
            }
            else
            {
                Console.WriteLine("Le point est proche ===>");
                P2.Draw();
            }

            Console.WriteLine("\n*********************Test Longueur*******************\n");

            double longueur = Poly1.LongueurPoly();

            Console.WriteLine("Voici la longueur:  " + longueur);
            Polyline PP = Polyliste.Find(i => i.LongueurPoly() == longueur);

            if (PP == null)
            {
                Console.WriteLine("Aucun point ne correspond a cette longueur");
            }
            else
            {
                PP.Draw();
            }

            Console.WriteLine("TestLoad et Save");
            ObservableCollection <ICartoObj> ListeTest = new ObservableCollection <ICartoObj>();

            ListeTest.Add(Poly1);



            MyPersonalMapData user = new MyPersonalMapData("Dresse", "Amarige", "email1");

            user.ObservableCollection = ListeTest;

            user.Save();
            Console.ReadKey();
        }
コード例 #14
0
        protected static bool PlacerPoint(ZoneFinale zonedepart, ZoneFinale zonearrivee, bool doReverseToo, Coordonnees coorReverse)
        {
            if (zonedepart == null || zonearrivee == null)
            {
                Console.Write("PlacerPoint: La zone de départ/arrivée est nulle ! ");
                return(false);
            }

            string accesspointname = "Pt d'accès de " + zonedepart.nom + " vers " + zonearrivee.nom;

            var accesspoint = new AccessPoint(accesspointname, zonedepart.Simulation.NomDuJeu, zonearrivee);

            if (doReverseToo)
            {
                var list = new AccessPointFinder().Find(zonedepart, zonearrivee);
                if (list.Count == 0)
                {
                    Console.WriteLine("Aucun point d'accès ne peut être placé entre la zone " + zonedepart + " et " +
                                      zonearrivee);
                }
                else
                {
                    foreach (var coor in list) // Place l'objet dans la première coordonnée valide
                    {
                        accesspoint.SetCoordonnees(coor);
                        if (zonedepart.PeutPlacerObjet(accesspoint))
                        {
                            if (!zonedepart.AjouterObjet(accesspoint)) // Pas normal donc break;
                            {
                                Console.WriteLine("PlacerPoint: Erreur anormale rencontrée au moment de l'ajout du pt d'accès" +
                                                  accesspoint + " à la zone " + zonedepart);
                            }
                            else
                            {
                                foreach (var adj in new AccessPointFinder().FindAjacentOfZone(coor, zonearrivee))
                                {
                                    if (PlacerPoint(zonearrivee, zonedepart, false, adj))
                                    {
                                        break;
                                    }
                                }
                            }
                            break;
                        }
                    }
                }
            }
            else
            {
                if (coorReverse == null)
                {
                    Console.WriteLine("Coordonnées du point d'accès reverse est null !");
                    return(false);
                }
                accesspoint.SetCoordonnees(coorReverse);
                if (!zonedepart.AjouterObjet(accesspoint))
                {
                    foreach (var obj in zonedepart.Objets) // s'il existe dejà un pt d'acces a cet endroit, rajouter la zone d'arrivée parmi les zones annexes
                    {
                        if (obj is AccessPoint)
                        {
                            if (obj.Case.Equals(coorReverse))
                            {
                                var objAccess = (AccessPoint)obj;
                                objAccess.AddZoneAnnexe(zonearrivee); // Cas où le point d'accès est relié à plusieurs zones (>= 3)
                                return(true);
                            }
                        }
                    }
                    Console.WriteLine("PlacerPoint: Erreur rencontrée au moment de l'ajout du pt d'accès" +
                                      accesspoint + " à la zone " + zonedepart);
                    return(false);
                }
            }
            return(true);
        }
コード例 #15
0
        static void Main(string[] args)
        {
            List <CartoObj> liste = new List <CartoObj>();

            Coordonnees c1 = new Coordonnees();

            liste.Add(c1);
            Coordonnees c2 = new Coordonnees(10, 20);

            liste.Add(c2);

            POI p1 = new POI();

            liste.Add(p1);
            POI p2 = new POI("test", 20, 30);

            liste.Add(p2);

            List <Coordonnees> l = new List <Coordonnees>();

            l.Add(new Coordonnees(0, 1));
            l.Add(new POI("lol", 0, 3));
            l.Add(new Coordonnees(3, 4));


            Polyline pl1 = new Polyline();

            liste.Add(pl1);
            Polyline pl2 = new Polyline(l, 3, Colors.AliceBlue);

            liste.Add(pl2);

            Polygon pol1 = new Polygon();

            liste.Add(pol1);
            Polygon pol2 = new Polygon(l, 2, Colors.ForestGreen, Colors.Aqua);

            liste.Add(pol2);

            foreach (CartoObj obj in liste)
            {
                if (obj is IPointy)
                {
                    Console.WriteLine("Ipointy -- ");
                }
                else
                {
                    Console.WriteLine("Not Ipointy --");
                }

                Console.WriteLine(obj);
                Console.WriteLine("\n");
            }

            List <Polyline> poListe = new List <Polyline>();

            poListe.Add(pl1);
            poListe.Add(pl2);

            Polyline pl3 = new Polyline();

            pl3.Coordonnees.Add(new Coordonnees(0, 5));
            poListe.Add(pl3);

            Polyline pl4 = new Polyline();

            pl4.Coordonnees.Add(new POI("lol", 0, 5));

            poListe.Add(new Polyline());
            poListe.Add(new Polyline());

            poListe.Sort();
            foreach (Polyline p in poListe)
            {
                Console.WriteLine(p);
            }


            PolylineComparer pc = new PolylineComparer();

            poListe.Sort(pc);
            Console.WriteLine("+++++++++++++");
            foreach (Polyline p in poListe)
            {
                Console.WriteLine(p);
            }

            Console.WriteLine("+++++++++++++");

            Console.WriteLine(
                poListe.Find(x => x.NbPoints == 1)
                );

            Console.WriteLine(
                poListe.FindAll(x => x.NbPoints == 1)
                );

            DisplayCartoObjCollection(
                poListe.FindAll(x => x.IsPointClose(new Coordonnees(0, 0), 1))
                );

            Console.WriteLine("--------------- ");

            CartoComparer cc = new CartoComparer();

            poListe.Sort(cc);
            DisplayCartoObjCollection(poListe);

            Console.ReadKey();
        }
コード例 #16
0
 private Node <Case> GetNode(Coordonnees coor, Grille grille)
 {
     return((Node <Case>)grille[coor.X, coor.Y]);
 }
コード例 #17
0
 public static void Edit(Coordonnees c)
 {
     CoordonneesService.Edit(c);
 }
コード例 #18
0
        protected static bool PlacerPoint( ZoneFinale zonedepart,ZoneFinale zonearrivee, bool doReverseToo,Coordonnees coorReverse)
        {
            if (zonedepart == null || zonearrivee == null)
            {
                Console.Write("PlacerPoint: La zone de départ/arrivée est nulle ! ");
                return false;
            }

            string accesspointname = "Pt d'accès de " + zonedepart.nom + " vers " + zonearrivee.nom;

            var accesspoint = new AccessPoint(accesspointname, zonedepart.Simulation.NomDuJeu, zonearrivee);

            if (doReverseToo)
            {
                var list = new AccessPointFinder().Find(zonedepart, zonearrivee);
                if (list.Count == 0)
                {
                    Console.WriteLine("Aucun point d'accès ne peut être placé entre la zone " + zonedepart + " et " +
                                      zonearrivee);
                }
                else
                {
                    foreach (var coor in list) // Place l'objet dans la première coordonnée valide
                    {
                        accesspoint.SetCoordonnees(coor);
                        if (zonedepart.PeutPlacerObjet(accesspoint))
                        {
                            if (!zonedepart.AjouterObjet(accesspoint)) // Pas normal donc break;
                                Console.WriteLine("PlacerPoint: Erreur anormale rencontrée au moment de l'ajout du pt d'accès" +
                                                  accesspoint + " à la zone " + zonedepart);
                            else
                            {
                                foreach (var adj in new AccessPointFinder().FindAjacentOfZone(coor, zonearrivee))
                                {
                                    if (PlacerPoint(zonearrivee, zonedepart, false, adj)) break;
                                }
                            }
                            break;
                        }
                    }
                }
            }
            else
            {
                if (coorReverse == null)
                {
                    Console.WriteLine("Coordonnées du point d'accès reverse est null !");
                    return false;
                }
                accesspoint.SetCoordonnees(coorReverse);
                if (!zonedepart.AjouterObjet(accesspoint))
                {

                    foreach (var obj in zonedepart.Objets) // s'il existe dejà un pt d'acces a cet endroit, rajouter la zone d'arrivée parmi les zones annexes
                    {
                        if (obj is AccessPoint)
                        {
                            if (obj.Case.Equals(coorReverse))
                            {
                                var objAccess = (AccessPoint) obj;
                                objAccess.AddZoneAnnexe(zonearrivee); // Cas où le point d'accès est relié à plusieurs zones (>= 3)
                                return true;
                            }
                        }
                    }
                    Console.WriteLine("PlacerPoint: Erreur rencontrée au moment de l'ajout du pt d'accès" +
                                      accesspoint + " à la zone " + zonedepart);
                    return false;
                }
            }
            return true;
        }
コード例 #19
0
ファイル: Table.cs プロジェクト: tibow91/MetaSimulatorConsole
 public Table(string nom, Coordonnees coor)
     : base(nom, EGame.AgeOfKebab, new TextureTable())
 {
     SetCoordonnees(coor);
 }
コード例 #20
0
ファイル: Annuaire.cs プロジェクト: tbayart/scam-vrac
 public IEnumerable <ISecteur> Secteurs(Coordonnees position, double distance)
 {
     return(SecteurPrincipal.Secteurs(position, distance).OfType <FloorSecteur>());
 }
コード例 #21
0
 public void SetCoordonnees(Coordonnees coor)
 {
     Case = coor;
 }
コード例 #22
0
        private Operateurs ajouterOperateur()
        {
            succesmessage.Text = "";
            errormessage.Text  = "";

            Operateurs  oper = new Operateurs();
            Coordonnees cord = new Coordonnees();

            if (nomTextBox.Text.Length == 0)
            {
                errormessage.Text = "Entrez un Nom";
                nomTextBox.Focus();
            }
            else if (prenomTextBox.Text.Length == 0)
            {
                errormessage.Text = "Entrez un Prenom";
                prenomTextBox.Focus();
            }
            else if (idTextBox.Text.Length == 0)
            {
                errormessage.Text = "Entrez un Matricul";
                idTextBox.Focus();
            }
            else
            {
                oper.Id      = Int32.Parse(idTextBox.Text);
                oper.nom     = nomTextBox.Text;
                oper.prenom  = prenomTextBox.Text;
                cord.Adresse = adresseTextBox.Text;
                if (male.IsChecked == true)
                {
                    cord.Sexe = "M";
                }
                else if (female.IsChecked == true)
                {
                    cord.Sexe = "F";
                }
                cord.id               = oper.Id;
                cord.civilStatus      = civilStatus.Text;
                cord.dateOfBirth      = dateOfBirth.SelectedDate;
                cord.dateOfEmployment = dateOfEmployment.SelectedDate;
                cord.departementName  = departementName.Text;
                cord.graduationDate   = graduationDate.SelectedDate;
                cord.educationLevel   = educationlevel.Text;
                cord.Ville            = villeTextBox.Text;
                cord.Email            = emailTextBox.Text;
                cord.Tel              = telTextBox.Text;
                if (postalCode.Text != "")
                {
                    cord.postalCode = Int32.Parse(postalCode.Text);
                }
                cord.jobTitle   = jobTitle.Text;
                cord.Operateur  = oper;
                oper.Coordonnee = cord;
                using (var unitOfWork = new UnitOfWork(new yazakiDBEntities()))
                {
                    try
                    {
                        unitOfWork.Operateurs.Add(oper);
                        unitOfWork.Save();

                        succesmessage.Text = "Opérateur ajouter avec succès";

                        return(oper);
                    }
                    catch (Exception ex)
                    {
                        errormessage.Text = "Une érreur c'est produite impossible d'ajouter l'opérateur";
                        MessageBox.Show(ex.ToString());
                    }
                }
            }
            return(null);
        }
コード例 #23
0
        /// <summary>
        /// Constructeur statique.
        /// </summary>
        static CatalogueComportements()
        {
            // Initialisation des Comportement statiques.
            DryadTurn = new Comportement()
            {
                IsForwarder = (e, agent) => false,
                IsHandler   = (e, agent) => e == Evenement.FirstTurn || e.Portee == 0,
                Handle      = (e, agent) =>
                {
                    //ThreadPool.QueueUserWorkItem(HighPerfTimer.timePoint,agent.id.ToString());
                    if (agent.caracteristiques[LesCaracteristiques.Solitude].valeur > 20)
                    {
                        agent.caracteristiques[LesCaracteristiques.DistanceDeDeplacement].valeur = 8;
                    }

                    int dist = agent.caracteristiques[LesCaracteristiques.DistanceDeDeplacement].valeur;

                    if (Kernel.CarteManipulee.Elements[agent.Coord.X][agent.Coord.Y].ElementBiome == TypeElementBiome.Eau ||
                        Kernel.CarteManipulee.Elements[agent.Coord.X][agent.Coord.Y].ElementBiome == TypeElementBiome.Pierre)
                    {
                        dist *= 4;
                    }


                    //Coordonnees oldCoord = new Coordonnees(agent.Coord.X, agent.Coord.Y);
                    Coordonnees newCoord =
                        new Coordonnees(
                            agent.Coord.X + Randomizer.Next(-dist, dist + 1),
                            agent.Coord.Y + Randomizer.Next(-dist, dist + 1)
                            );


                    newCoord.X = Math.Max(0, newCoord.X);
                    newCoord.X = Math.Min(Kernel.CarteManipulee.Largeur - 1, newCoord.X);
                    newCoord.Y = Math.Max(0, newCoord.Y);
                    newCoord.Y = Math.Min(Kernel.CarteManipulee.Hauteur - 1, newCoord.Y);

                    Resultat res = agent.Do(NomAction.Teleporter, agent, newCoord);

                    if (res == Resultat.Succes)
                    {
                        agent.Do(NomAction.Parler, agent, new Evt_Deplace(agent, agent.Coord.X, agent.Coord.Y));
                    }

                    agent.caracteristiques[LesCaracteristiques.Solitude].valeur++;

                    //Thread.Sleep(agent.caracteristiques[LesCaracteristiques.LenteurEsprit].valeur);
                    agent.Envoyer(new Evenement(agent, null, 0));
                }
            };

            NearTo = new Comportement()
            {
                IsForwarder = (e, agent) => false,
                IsHandler   = (e, agent) => e is Evt_Deplace,
                Handle      = (e, agent) =>
                {
                    if (Kernel.CarteManipulee.Elements[agent.Coord.X][agent.Coord.Y].ElementBiome == TypeElementBiome.Eau ||
                        Kernel.CarteManipulee.Elements[agent.Coord.X][agent.Coord.Y].ElementBiome == TypeElementBiome.Pierre)
                    {
                        return;
                    }

                    agent.caracteristiques[LesCaracteristiques.DistanceDeDeplacement].valeur = 1;
                    agent.caracteristiques[LesCaracteristiques.Solitude].valeur = 3;
                    Resultat res = agent.Do(NomAction.Planter, agent, new Coordonnees(agent.Coord.X, agent.Coord.Y));

                    //Thread.Sleep(agent.caracteristiques[LesCaracteristiques.LenteurEsprit].valeur);
                    //agent.Envoyer(new Evenement(agent, null, 0));

                    if (res != Resultat.Succes)
                    {
                        return;
                    }

                    Resultat resMort = agent.Do(NomAction.Mourir, agent, null);

                    if (resMort == Resultat.Succes)
                    {
                        agent.Do(NomAction.Parler, agent, new Evt_Mort(agent));
                    }
                }
            };

            DryadTurn.Next = NearTo;


            // Initialisation des Comportement statiques.
            CitizenTurn = new Comportement()
            {
                IsForwarder = (e, agent) => false,
                IsHandler   = (e, agent) => e == Evenement.FirstTurn || e.Portee == 0,
                Handle      = (e, agent) =>
                {
                    int dist = agent.caracteristiques[LesCaracteristiques.DistanceDeDeplacement].valeur;

                    //Coordonnees oldCoord = new Coordonnees(agent.Coord.X, agent.Coord.Y);
                    Coordonnees newCoord = new Coordonnees(agent.Coord.X + Randomizer.Next(-dist, dist + 1), agent.Coord.Y + Randomizer.Next(-dist, dist + 1));

                    newCoord.X = Math.Max(0, newCoord.X);
                    newCoord.X = Math.Min(Kernel.CarteManipulee.Largeur - 1, newCoord.X);
                    newCoord.Y = Math.Max(0, newCoord.Y);
                    newCoord.Y = Math.Min(Kernel.CarteManipulee.Hauteur - 1, newCoord.Y);

                    Resultat res = agent.Do(NomAction.Teleporter, agent, newCoord);

                    if (res == Resultat.Succes)
                    {
                        agent.Do(NomAction.Construire, agent, agent.Coord);
                    }

                    // MaisonAutour ?
                    agent.caracteristiques[LesCaracteristiques.Maison_X] = CatalogueCaracteristique.Maison_X(Kernel.CarteManipulee.Largeur / 2);
                    agent.caracteristiques[LesCaracteristiques.Maison_Y] = CatalogueCaracteristique.Maison_Y(Kernel.CarteManipulee.Hauteur / 2);

                    //Thread.Sleep(agent.caracteristiques[LesCaracteristiques.LenteurEsprit].valeur);
                    agent.Envoyer(new Evenement(agent, null, 0));
                }
            };

            CitizenBuildRoad = new Comportement()
            {
                IsForwarder = (e, agent) => false,
                IsHandler   = (e, agent) =>
                {
                    Caracteristique Maison_X = null;
                    Caracteristique Maison_Y = null;
                    agent.caracteristiques.TryGetValue(LesCaracteristiques.Maison_X, out Maison_X);
                    agent.caracteristiques.TryGetValue(LesCaracteristiques.Maison_Y, out Maison_Y);
                    return((e == Evenement.FirstTurn || e.Portee == 0) &&
                           (Maison_X != null && Maison_X.valeur >= 0) &&
                           (Maison_Y != null && Maison_Y.valeur >= 0));
                },
                Handle = (e, agent) =>
                {
                    Resultat res = agent.Do(NomAction.ConstruireRoute, agent, agent.Coord);
                    if (res == Resultat.Succes)
                    {
                        int offset_x = agent.caracteristiques[LesCaracteristiques.Maison_X].valeur - agent.Coord.X;
                        int offset_y = agent.caracteristiques[LesCaracteristiques.Maison_Y].valeur - agent.Coord.Y;

                        agent.Do(NomAction.Teleporter, agent, new Coordonnees(agent.Coord.X + (offset_x == 0 ? offset_x : (offset_x / Math.Abs(offset_x))), agent.Coord.Y + (offset_y == 0 ? offset_y : (offset_y / Math.Abs(offset_y)))));
                    }

                    //Thread.Sleep(agent.caracteristiques[LesCaracteristiques.LenteurEsprit].valeur);
                    agent.Envoyer(new Evenement(agent, null, 0));
                }
            };

            CitizenBuildRoad.Next = CitizenTurn;
        }
コード例 #24
0
 protected override bool TestEgaliteObjet(ObjetAbstrait obj, Coordonnees coor)
 {
     if (coor.Equals(obj.Case)) return true;
     return false;
 }
コード例 #25
0
 public GatherPoint(EGame nomdujeu, Coordonnees coor)
     : base("Point de rassemblement générique", nomdujeu, new TextureFootIcon())
 {
     SetCoordonnees(coor);
 }
コード例 #26
0
 protected virtual bool TestEgaliteObjet(ObjetAbstrait obj, Coordonnees coor)
 {
     return false;
     //            if (coor.Equals(obj.Case)) return true;
     //            return false;
 }
コード例 #27
0
ファイル: Carte.cs プロジェクト: tbayart/scam-vrac
        public Coordonnees getPostionElement(TypeElementBiome typeElement, Coordonnees centre)
        {
            if (this.Elements[centre.X][centre.Y].ElementBiome == typeElement)
            {
                return(centre);
            }

            int rayonMax = Math.Max(this.Hauteur / 2, this.Largeur / 2);
            int rayonCarre;
            int y;
            int x1, x2, y1, y2;

            Coordonnees res = null;

            // DEBUG
            //StreamWriter sw = new StreamWriter(@".\Debug_getPostionElement.txt", false);
            //double tempsTotal = 0;
            //double tempsCalculRayonCarre = 0;
            //double tempsCalculY = 0;
            //double tempsRechercheDansTableauElements = 0;

            //DateTime debutGlobal, debutCalculRayonCarre, debutCalculY, debutRechercheTableau;

            //sw.WriteLine("Rayon;Etape;Temps");

            //debutGlobal = DateTime.Now;
            // -----

            for (int rayon = 1; rayon < rayonMax; rayon++)
            {
                // DEBUG
                //debutCalculRayonCarre = DateTime.Now;
                // -----

                rayonCarre = rayon * rayon;

                // DEBUG
                //tempsCalculRayonCarre = DateTime.Now.Subtract(debutCalculRayonCarre).TotalMilliseconds;
                //sw.WriteLine("{0};Calcul R²;{1:0.000000}", rayon, tempsCalculRayonCarre);
                // -----

                for (int x = 0; x <= rayon; x++)
                {
                    // DEBUG
                    //debutCalculY = DateTime.Now;
                    // -----

                    // x² + y² = R²
                    y = (int)Math.Sqrt(rayonCarre - (x * x));

                    // DEBUG
                    //tempsCalculY = DateTime.Now.Subtract(debutCalculY).TotalMilliseconds;
                    //sw.WriteLine(";Calcul Y;;{0:0.000000}", tempsCalculY);
                    //debutRechercheTableau = DateTime.Now;
                    // -----

                    x1 = centre.X - x;
                    x2 = centre.X + x;
                    y1 = centre.Y - y;
                    y2 = centre.Y + y;

                    if (x1 > 0 && y1 > 0 && this.Elements[x1][y1].ElementBiome == typeElement)
                    {
                        res = new Coordonnees(x1, y1);
                    }
                    else if (x1 > 0 && y2 < this.Hauteur && this.Elements[x1][y2].ElementBiome == typeElement)
                    {
                        res = new Coordonnees(x1, y2);
                    }
                    else if (x2 < this.Largeur && y1 > 0 && this.Elements[x2][y1].ElementBiome == typeElement)
                    {
                        res = new Coordonnees(x2, y1);
                    }
                    else if (x2 < this.Largeur && y2 < this.Hauteur && this.Elements[x2][y2].ElementBiome == typeElement)
                    {
                        res = new Coordonnees(x2, y2);
                    }

                    // DEBUG
                    //tempsRechercheDansTableauElements = DateTime.Now.Subtract(debutRechercheTableau).TotalMilliseconds;
                    //sw.WriteLine(";Recherche;;{0:0.000000}", tempsRechercheDansTableauElements);
                    // -----

                    if (res != null)
                    {
                        break;
                    }
                }

                // DEBUG
                //sw.WriteLine("");
                //sw.Flush();
                // -----

                if (res != null)
                {
                    break;
                }
            }

            // DEBUG
            //tempsTotal = DateTime.Now.Subtract(debutGlobal).TotalMilliseconds;
            //sw.WriteLine("TOTAL;{0:0.000}", tempsTotal);
            //sw.WriteLine();
            //if (res != null)
            //    sw.WriteLine("Point trouvé;{0}:{1}", res.X, res.Y);
            //else
            //    sw.WriteLine("Rien trouvé", tempsTotal);

            //sw.Flush();
            //sw.Close();
            // -----

            return(res);
        }
コード例 #28
0
 protected override PersonnageMobilisable PersonnageToInsertAt(Coordonnees coor)
 {
     return new Client("Client " + (PersonnagesInseres+1),coor);
 }
コード例 #29
0
 public Client(string nom,Coordonnees coor)
     : base(nom, EGame.AgeOfKebab, new TexturePlayer())
 {
     SetCoordonnees(coor);
     Etat = new EtatClientEnAttenteDeFaim();
 }
コード例 #30
0
 private Node<Case> GetNode(Coordonnees coor, Grille grille)
 {
     return (Node<Case>)grille[coor.X, coor.Y];
 }
コード例 #31
0
 protected abstract PersonnageMobilisable PersonnageToInsertAt(Coordonnees coor);
コード例 #32
0
ファイル: Table.cs プロジェクト: tibow91/MetaSimulatorConsole
 public Table(string nom, Coordonnees coor) : base(nom, EGame.AgeOfKebab, new TextureTable())
 {
     SetCoordonnees(coor);
 }
コード例 #33
0
 public SpawnPoint(EGame nomdujeu, Coordonnees coor)
     : base("Point d'apparition générique", nomdujeu, new TextureCrossedCircle())
 {
     SetCoordonnees(coor);
 }
コード例 #34
0
 public static void Add(Coordonnees c)
 {
     CoordonneesService.Add(c);
 }