Example #1
0
        public void aktualizujStanPopulacji(Populacja populacja, Magazyn magazyn)
        {
            int warunekZwiekszenia  = 1;
            int warunekZmniejszenia = 0;

            // prosta strategia, jesli wszystkie produkty sa powyzej 10 zwiekszamy populacje o 10
            // jesli mamy 0 jakiegos zasobu zmniejszamy populacje o 10
            foreach (KeyValuePair <string, Zasob> para in magazyn.pobierzStanMagazynu())
            {
                if (para.Value.iloscZasobu() < 30)
                {
                    warunekZwiekszenia = 0;
                }
                if (para.Value.iloscZasobu() == 0)
                {
                    warunekZmniejszenia = 1;
                }
            }
            if (warunekZmniejszenia == 1)
            {
                populacja.zmienLiczbeLudnosci(-10);
            }
            if (warunekZwiekszenia == 1)
            {
                populacja.zmienLiczbeLudnosci(10);
            }
        }
 /// <summary>
 /// (w takiej prostej strategi przyjmuje ze kazda osoba wykorzystuje 1 kazdego surowca w wiosce, dodatkowo produkujac 2 surowca
 /// ktory jest wydobywany w danej wiosce)
 /// </summary>
 /// <param name="magazyn"></param>
 /// <param name="potencjalWydobywczy"></param>
 /// <param name="liczbaLudnosci"></param>
 public void aktualizujStanyMagazynowe(Magazyn magazyn, PotencjalWydobywczy potencjalWydobywczy, int liczbaLudnosci)
 {
     //Dictionary<string, Zasob> stan = magazyn.pobierzStanMagazynu(); Jesli chcialbym pobierac stan magazynu zmieniac i wysylac do magazynu
     foreach (KeyValuePair<string, Zasob> pair in magazyn.pobierzStanMagazynu())
     {
         if (potencjalWydobywczy.pobierzPotencjal().Contains(pair.Key))
         {
             pair.Value.zmienIloscZasobu(3*liczbaLudnosci);//zmiana w zwiazku z potencjalem wydobywczym
         }
         pair.Value.zmienIloscZasobu(-(liczbaLudnosci/3)); // zmiana w zwiazku z populacja
     }
 }
Example #3
0
 /// <summary>
 /// (w takiej prostej strategi przyjmuje ze kazda osoba wykorzystuje 1 kazdego surowca w wiosce, dodatkowo produkujac 2 surowca
 /// ktory jest wydobywany w danej wiosce)
 /// </summary>
 /// <param name="magazyn"></param>
 /// <param name="potencjalWydobywczy"></param>
 /// <param name="liczbaLudnosci"></param>
 public void aktualizujStanyMagazynowe(Magazyn magazyn, PotencjalWydobywczy potencjalWydobywczy, int liczbaLudnosci)
 {
     //Dictionary<string, Zasob> stan = magazyn.pobierzStanMagazynu(); Jesli chcialbym pobierac stan magazynu zmieniac i wysylac do magazynu
     foreach (KeyValuePair <string, Zasob> pair in magazyn.pobierzStanMagazynu())
     {
         if (potencjalWydobywczy.pobierzPotencjal().Contains(pair.Key))
         {
             pair.Value.zmienIloscZasobu(3 * liczbaLudnosci); //zmiana w zwiazku z potencjalem wydobywczym
         }
         pair.Value.zmienIloscZasobu(-(liczbaLudnosci / 3));  // zmiana w zwiazku z populacja
     }
 }
 public void aktualizujStanPopulacji(Populacja populacja, Magazyn magazyn)
 {
     int warunekZwiekszenia = 1;
     int warunekZmniejszenia = 0;
     // prosta strategia, jesli wszystkie produkty sa powyzej 10 zwiekszamy populacje o 10
     // jesli mamy 0 jakiegos zasobu zmniejszamy populacje o 10
     foreach(KeyValuePair<string, Zasob> para in magazyn.pobierzStanMagazynu()){
         if (para.Value.iloscZasobu() < 30) { warunekZwiekszenia = 0;}
         if (para.Value.iloscZasobu() == 0) { warunekZmniejszenia = 1;}
     }
     if (warunekZmniejszenia == 1){populacja.zmienLiczbeLudnosci(-10);}
     if (warunekZwiekszenia == 1){populacja.zmienLiczbeLudnosci(10);}
 }
Example #5
0
        //############################### KONSTRUKTOR #########################################

        public Osada(IStrategiaOsady strategia,
                     IStrategiaHandlu strategiaHandlu,
                     string nazwa,
                     Magazyn magazyn,
                     Populacja populacja,
                     PotencjalWydobywczy potencjalWydobywczy,
                     Point pozycja)
        {
            this.nazwa               = nazwa;
            this.populacja           = populacja;
            this.magazyn             = magazyn;
            this.targ                = new Targ(magazyn, strategiaHandlu, potencjalWydobywczy.pobierzPotencjal());
            this.strategia           = strategia;
            this.potencjalWydobywczy = potencjalWydobywczy;
            this.pozycja             = pozycja;
        }
Example #6
0
 //############################### KONSTRUKTOR #########################################
 public Osada(IStrategiaOsady strategia,
             IStrategiaHandlu strategiaHandlu, 
             string nazwa, 
             Magazyn magazyn, 
             Populacja populacja, 
             PotencjalWydobywczy potencjalWydobywczy, 
             Point pozycja)
 {
     this.nazwa = nazwa;
     this.populacja = populacja;
     this.magazyn = magazyn;
     this.targ = new Targ(magazyn, strategiaHandlu, potencjalWydobywczy.pobierzPotencjal());
     this.strategia = strategia;
     this.potencjalWydobywczy = potencjalWydobywczy;
     this.pozycja = pozycja;
 }
        /// <summary>
        /// Obecna wymiana polega na tym ze handlarz wymienia sie z targiem porowno, tj rozladowuje swoje zasoby i sa
        /// ladowane do magazynua potem z magazynu bierzemy surowiec ktorego jest najwiecej i ladujemy mu na woz
        /// Pożadana strategia jest raczej inna, pozniewaz obecna jest strasznie trywialna.
        /// </summary>
        /// <param name="magazyn"></param>
        /// <param name="handlarz"></param>
        public void wymianaTowaru(Magazyn magazyn, Handlarz handlarz, List<string> coSprzedawac)
        {
            Console.WriteLine(String.Format("Co sprzedawac: {0}",coSprzedawac.First()));
            KeyValuePair<string, Zasob> towarHandlarza = handlarz.rozladujTowar();
            Dictionary<string, Zasob> stanMagazynu = magazyn.pobierzStanMagazynu();
            Zasob towarDoMagazynu = stanMagazynu[towarHandlarza.Key];

            towarDoMagazynu.zmienIloscZasobu(towarHandlarza.Value.iloscZasobu());
            KeyValuePair<string, Zasob> towarZMagazynu = new KeyValuePair<string,Zasob>();
            string towarZakupowany = coSprzedawac.First();
            foreach (KeyValuePair<string, Zasob> para in stanMagazynu)
            {
                if (para.Key.Equals(towarZakupowany))
                {
                    towarZMagazynu = para;
                }
            }
            Console.WriteLine(String.Format("Zaladowal : {0}",towarZMagazynu.Key));
            towarZMagazynu.Value.zmienIloscZasobu(-towarHandlarza.Value.iloscZasobu());
            handlarz.ladujTowar(new KeyValuePair<string, Zasob>(towarZMagazynu.Key, new Zasob(towarZMagazynu.Key, towarHandlarza.Value.iloscZasobu(), towarZMagazynu.Value.zwrocWageZasobu())));
        }
        /// <summary>
        /// Obecna wymiana polega na tym ze handlarz wymienia sie z targiem porowno, tj rozladowuje swoje zasoby i sa
        /// ladowane do magazynua potem z magazynu bierzemy surowiec ktorego jest najwiecej i ladujemy mu na woz
        /// Pożadana strategia jest raczej inna, pozniewaz obecna jest strasznie trywialna.
        /// </summary>
        /// <param name="magazyn"></param>
        /// <param name="handlarz"></param>
        public void wymianaTowaru(Magazyn magazyn, Handlarz handlarz, List <string> coSprzedawac)
        {
            Console.WriteLine(String.Format("Co sprzedawac: {0}", coSprzedawac.First()));
            KeyValuePair <string, Zasob> towarHandlarza = handlarz.rozladujTowar();
            Dictionary <string, Zasob>   stanMagazynu   = magazyn.pobierzStanMagazynu();
            Zasob towarDoMagazynu = stanMagazynu[towarHandlarza.Key];

            towarDoMagazynu.zmienIloscZasobu(towarHandlarza.Value.iloscZasobu());
            KeyValuePair <string, Zasob> towarZMagazynu = new KeyValuePair <string, Zasob>();
            string towarZakupowany = coSprzedawac.First();

            foreach (KeyValuePair <string, Zasob> para in stanMagazynu)
            {
                if (para.Key.Equals(towarZakupowany))
                {
                    towarZMagazynu = para;
                }
            }
            Console.WriteLine(String.Format("Zaladowal : {0}", towarZMagazynu.Key));
            towarZMagazynu.Value.zmienIloscZasobu(-towarHandlarza.Value.iloscZasobu());
            handlarz.ladujTowar(new KeyValuePair <string, Zasob>(towarZMagazynu.Key, new Zasob(towarZMagazynu.Key, towarHandlarza.Value.iloscZasobu(), towarZMagazynu.Value.zwrocWageZasobu())));
        }
Example #9
0
        /// <summary>
        /// Wyznaczanie celu podrozy poprzez wybranie wioski ktora ma najmniej surowca ktory posiada handlarz
        /// </summary>
        /// <param name="handlarz"></param>
        /// <returns></returns>

        public Osada wyznaczCelPodrozy(Handlarz handlarz)
        {
            Osada cel      = listaOsad.FirstOrDefault();
            Zasob najmniej = new Zasob(handlarz.zwrocWoz().NazwaPrzewozonegoZasobu(), 10000, 0);

            foreach (Osada osada in listaOsad)
            {
                bool warunekWolnosciOsady = false;
                foreach (Handlarz temp in listaHandlarzy)
                {
                    if (temp.zwrocCelPodrozy() == osada && temp.zwrocWoz().NazwaPrzewozonegoZasobu() == handlarz.zwrocWoz().NazwaPrzewozonegoZasobu())
                    {
                        warunekWolnosciOsady = true;
                        break;
                    }
                }
                if (warunekWolnosciOsady)
                {
                    continue;
                }
                Magazyn magazyn = osada.magazyny();
                foreach (KeyValuePair <string, Zasob> para in magazyn.pobierzStanMagazynu())
                {
                    if (para.Key.Equals(najmniej.nazwaZasobu()))
                    {
                        if (najmniej.iloscZasobu() > para.Value.iloscZasobu())
                        {
                            najmniej = para.Value;
                            cel      = osada;
                            break;
                        }
                    }
                }
            }
            return(cel);
        }
Example #10
0
 //##################################### KONSTRUKTOR #################################
 public Targ(Magazyn magazyn, IStrategiaHandlu strategia, List<string> coSprzedawac)
 {
     this.coSprzedawac = coSprzedawac;
     this.strategia = strategia;
     this.magazyn = magazyn;
 }
Example #11
0
        //##################################### KONSTRUKTOR #################################



        public Targ(Magazyn magazyn, IStrategiaHandlu strategia, List <string> coSprzedawac)
        {
            this.coSprzedawac = coSprzedawac;
            this.strategia    = strategia;
            this.magazyn      = magazyn;
        }