Exemple #1
0
        public Fourmiliere(int _dimensionX, int _dimensionY)
        {
            TitreApplication = "Simulateur fourmilière ALAP";
            vitesse          = 200;

            this.DimensionX     = _dimensionX;
            this.DimensionY     = _dimensionY;
            Fabrique            = new FabriqueFourmiliere();
            PersonnagesList     = new ObservableCollection <PersonnageAbstrait>();
            PersonnagesMortList = new ObservableCollection <PersonnageAbstrait>();
            coordMaison         = Fabrique.CreerPosition(10, 10);
            AjouterReine();
            //PersonnagesList.Add(Fabrique.CreerGuerriere("Guerriere 0"));
            //PersonnagesList.Add(Fabrique.CreerOuvriere("Ouvriere 0", Fabrique.CreerPosition(10, 10)));
            //PersonnagesList.Add(Fabrique.CreerTermite("Termite 0"));
            //PersonnagesList.Add(Fabrique.CreerTermite(String.Format("Termite {0}", PersonnagesList.Count), Fabrique.CreerPosition(3, 3), Fabrique.CreerPosition(positionX, positionY)));

            ListObservateur = new List <PersonnageAbstrait>();
            ObjetList       = new ObservableCollection <ObjetAbstrait>();
            ZoneList        = new ObservableCollection <ZoneAbstrait>();

            meteo = new Meteo();
            meteo.ListObservateur = new List <PersonnageAbstrait>();
            //place des morceaux de nourriture sous la reine pour qu'elle puisse pondre dès le début...
            //plus besoin de faire spawn de fourmis
            for (int i = 0; i < 50; i++)
            {
                ObjetList.Add(new MorceauNourriture("Morceau N°" + i, Fabrique.CreerPosition(10, 10)));
            }
            InitZones();
        }
Exemple #2
0
        public MainWindow()
        {
            InitializeComponent();
            var fabrique    = new FabriqueFourmiliere("Master fabrique");
            var fourmiliere = new Fourmiliere(fabrique);

            DataContext = this;
        }
Exemple #3
0
        public void PondreOeuf()
        {
            FabriqueFourmiliere fabrique = new FabriqueFourmiliere();
            CoordonneesAbstrait pos      = new Coordonnees();

            pos.X     = Position.X + Fourmiliere.Hazard.Next(-1, 2);
            pos.Y     = Position.Y + Fourmiliere.Hazard.Next(-1, 2);
            oeufPondu = (Oeuf)fabrique.CreerOeuf(String.Format("Oeuf N° {0}", zone.ObjetList.Where(x => x.GetType().Equals(typeof(Oeuf))).Count()), pos);
            AjouterEtape(0, String.Format("Je pond un oeuf en X={0}, Y={1}", pos.X, pos.Y), Position.X, Position.Y);
        }
Exemple #4
0
        public MasterViewModel(FabriqueFourmiliere fabriqueFourmiliere, Fourmiliere fourmiliere)
        {
            this._fabriqueFourmiliere = fabriqueFourmiliere;
            this._fourmiliere         = fourmiliere;

            this._fourmis     = new ObservableCollection <FourmiViewModel>();
            this._combatantes = new ObservableCollection <CombatanteViewModel>();
            this._cueilleuses = new ObservableCollection <CueilleuseViewModel>();

            foreach (var personnageAbstrait in this._fourmiliere.PersonnagesList)
            {
                if (personnageAbstrait.Nom == "fourmi")
                {
                    var fourmi = (Fourmi)personnageAbstrait;
                    this._fourmis.Add(new FourmiViewModel(fourmi));
                }
                if (personnageAbstrait.Nom == "combatante")
                {
                    var combatante = (Combatante)personnageAbstrait;
                    this._combatantes.Add(new CombatanteViewModel(combatante));
                }
                if (personnageAbstrait.Nom == "cueilleuse")
                {
                    var cueilleuse = (Cueilleuse)personnageAbstrait;
                    this._cueilleuses.Add(new CueilleuseViewModel(cueilleuse));
                }
            }
            this._collectionFourmisView = CollectionViewSource.GetDefaultView(this._fourmis);
            if (this._collectionFourmisView == null)
            {
                throw new NullReferenceException("collectionViewFourmi");
            }

            this._collectionFourmisView.CurrentChanged += new EventHandler(this.OnCollectionViewCurrentChangedFourmi);

            this._collectionCueilleusesView = CollectionViewSource.GetDefaultView(this._cueilleuses);
            if (this._collectionCueilleusesView == null)
            {
                throw new NullReferenceException("collectionViewCueilleuse");
            }

            this._collectionCueilleusesView.CurrentChanged += new EventHandler(this.OnCollectionViewCurrentChangedCueilleuse);

            this._collectionCombatantesView = CollectionViewSource.GetDefaultView(this._combatantes);
            if (this._collectionCombatantesView == null)
            {
                throw new NullReferenceException("collectionViewCombatante");
            }

            this._collectionCombatantesView.CurrentChanged += new EventHandler(this.OnCollectionViewCurrentChangedCombatante);
        }
Exemple #5
0
        public override List <Evenement> executer(PersonnageAbstrait personnage, EnvironnementAbstrait env)
        {
            FabriqueAbstraite fabriqueFourmiliere = new FabriqueFourmiliere();
            List <Evenement>  evenements          = new List <Evenement>();

            if (env.fourmiliere.valeurNutritiveTotalFourmiliere >= 2)
            {
                Console.Write("Ponte oeuf/n");
                Random r   = new Random((int)DateTime.Now.Ticks);
                int    rnd = r.Next((int)FourmiliereConstante.typeFourmie.oeufFourmiOuvriere, (int)FourmiliereConstante.typeFourmie.oeufFourmiChaman);

                env.AjouterPersonnage(fabriqueFourmiliere.creerPersonnage("oeuf" + FabriqueFourmiliere.id, rnd, env.fourmiliere.position, env));
                evenements.Add(new Evenement(personnage, (int)FourmiliereConstante.typeEvenement.pondreOeuf));
                env.fourmiliere.valeurNutritiveTotalFourmiliere -= 2;
            }
            return(evenements);
        }
Exemple #6
0
        public override List <Evenement> executer(PersonnageAbstrait personnage, EnvironnementAbstrait env)
        {
            FabriqueAbstraite fabriqueFourmiliere = new FabriqueFourmiliere();
            List <Evenement>  evenements          = new List <Evenement>();

            if (personnage.GetType() == typeof(Oeuf))
            {
                Oeuf oeuf = (Oeuf)personnage;
                oeuf.timer--;
                if (oeuf.timer == 0)
                {
                    evenements.Add(new Evenement(personnage, (int)FourmiliereConstante.typeEvenement.eclore));
                    oeuf.pointDeVie = 0;
                }
            }
            return(evenements);
        }
        static void Main(string[] args)
        {
            Console.WriteLine("----- Fourmilière -----");

            FabriqueAbstraite uneFabrique = new FabriqueFourmiliere();

            EnvironnementAbstrait fourmiPalace = uneFabrique.CreerEnvironment();

            fourmiPalace.ChargerEnvironnement(uneFabrique);
            fourmiPalace.ChargerPersonnages(uneFabrique);

            Console.WriteLine(fourmiPalace.Statistiques());

            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine(fourmiPalace.Simuler());
            }

            Console.ReadLine();
        }
Exemple #8
0
        static void Main(string[] args)
        {
            int compteur = 0;
            var fabrique = new FabriqueFourmiliere("Premiere fabrique de fourmi");

            var fourmiliere   = (Fourmiliere)fabrique.CreerEnvironnement();
            var colonie       = (BoutDeTerrain)fabrique.CreerZone("InterieurColonie");
            var entreeColonie = (BoutDeTerrain)fabrique.CreerZone("EntreeColonie");

            var acces = (Chemin)fabrique.CreerAcces(colonie, entreeColonie);

            var fourmi = (Fourmi)fabrique.CreerPersonnage("fourmi");

            fourmi.Position = colonie;
            fourmi.Attach(new ObservateurFourmi());

            var cueilleuse = (Cueilleuse)fabrique.CreerPersonnage("cueilleuse");

            cueilleuse.Position = entreeColonie;
            cueilleuse.Attach(new ObservateurCueilleuse());

            var reine = (Reine)fabrique.CreerPersonnage("reine");

            reine.Position = colonie;
            reine.Attach(new ObservateurReine());

            var combatante = (Combatante)fabrique.CreerPersonnage("combatante");

            combatante.Position = entreeColonie;
            combatante.Attach(new ObservateurCombatante());


            var oeuf = (Oeuf)fabrique.CreerObjet("oeuf");

            oeuf.Position = entreeColonie;
            var pheromone  = (Pheromone)fabrique.CreerObjet("Pheromone");
            var nouritture = (Nourriture)fabrique.CreerObjet("nourriture");


            var météo = (Meteo.Temps)(new Random().Next(0, 2));

            switch ((int)météo)
            {
            case (int)Meteo.Temps.Soleil:
                break;

            case (int)Meteo.Temps.Pluie:
                fourmi.Strategie     = new StrategieRentrerColonie();
                cueilleuse.Strategie = new StrategieRentrerColonie();
                reine.Strategie      = new StrategieArreterPondre();
                combatante.Strategie = new StrategieDefendreColonie();
                break;
            }
            fourmiliere.AjoutePersonnage(combatante);
            fourmiliere.AjoutePersonnage(reine);
            fourmiliere.AjoutePersonnage(cueilleuse);
            fourmiliere.AjoutePersonnage(fourmi);

            fourmiliere.AjouteObjet(oeuf);
            fourmiliere.AjouteObjet(nouritture);
            fourmiliere.AjouteObjet(pheromone);

            fourmiliere.AjouteZoneAbstraites(colonie, entreeColonie);
            fourmiliere.AjouteChemins(fabrique, acces);

            foreach (var perso in fourmiliere.PersonnagesList)
            {
                if (perso.Nom == "fourmi")
                {
                    var f = (Fourmi)perso; f.AnalyseSituation();
                }
                if (perso.Nom == "cueilleuse")
                {
                    var c = (Cueilleuse)perso; c.AnalyseSituation();
                }
                if (perso.Nom == "reine")
                {
                    var r = (Reine)perso; r.AnalyseSituation();
                }
                if (perso.Nom == "combatante")
                {
                    var c = (Combatante)perso; c.AnalyseSituation();
                }
            }
            reine.Oeuf++;


            while (true)
            {
                if (compteur == 5 || compteur == 10)
                {
                    switch ((int)météo)
                    {
                    case (int)Meteo.Temps.Soleil:
                        break;

                    case (int)Meteo.Temps.Pluie:
                        fourmi.Strategie     = new StrategieRentrerColonie();
                        cueilleuse.Strategie = new StrategieRentrerColonie();
                        reine.Strategie      = new StrategieArreterPondre();
                        combatante.Strategie = new StrategieDefendreColonie();
                        break;
                    }
                }

                Console.ReadKey();
                foreach (var perso in fourmiliere.PersonnagesList)
                {
                    if (perso.Nom == "fourmi")
                    {
                        var f = (Fourmi)perso; f.Vie -= 1;
                    }
                    if (perso.Nom == "cueilleuse")
                    {
                        var c = (Cueilleuse)perso; c.Vie -= 1;
                    }
                    if (perso.Nom == "reine")
                    {
                        var r = (Reine)perso; r.Vie -= 1;
                    }
                    if (perso.Nom == "combatante")
                    {
                        var c = (Combatante)perso; c.Vie -= 1;
                    }
                }
                compteur++;
            }


            //fourmiliere.AjouteObjet(fabrique.CreerObjet("oeuf"));
            //fourmiliere.AjoutePersonnage(fabrique.CreerPersonnage("fourmi"));

            //var zoneFourmiliere = fabrique.CreerZone("test zone");

            //var accesFourmiliere = fabrique.CreerAcces(new BoutDeTerrain("test bout de terrain debut"), new BoutDeTerrain("test bout de terrain fin"));

            //fourmiliere.ZonesAbstraitesList.Add(zoneFourmiliere);
            //fourmiliere.AccesAbstraitsList.Add(accesFourmiliere);

            //Console.WriteLine("Nombre de personnage : " + fourmiliere.PersonnagesList.Count);
            //Console.WriteLine("Nombre d'accès : " + fourmiliere.AccesAbstraitsList.Count);
            //Console.WriteLine("Nombre de zone : " + fourmiliere.ZonesAbstraitesList.Count);
            //Console.WriteLine("Nombre de zone : " + fourmiliere.ZonesAbstraitesList.Count);
        }