/// <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;
 }
示例#2
0
        /// <summary>
        /// metoda generujaca handlarzy na podstawie strategi
        /// </summary>
        /// <returns>lista Handlarzy</returns>
        private List <Handlarz> generujHandlarzy()
        {
            List <Handlarz> lista = new List <Handlarz>();

            for (int i = 0; i < strategiaGenerowania.iloscHandlarzyDoWygenerowania(); i++)
            {
                Handlarz handlarz = fabrykaHandlarzy.generujHandlarza();

                lista.Add(handlarz);
            }
            return(lista);
        }
        /// <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())));
        }
示例#5
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);
        }
示例#6
0
 public void dodajHandlarza(Handlarz handlarz)
 {
     this.listaHandlarzy.Add(handlarz);
 }
示例#7
0
 //###################################### METODY ########################################
 /// <summary>
 /// wymiany uzywam ze strategi handlu
 /// </summary>
 /// <param name="handlarz"></param>
 public void WymianaTowaru(Handlarz handlarz)
 {
     strategia.wymianaTowaru(magazyn, handlarz, coSprzedawac);
 }
示例#8
0
 public void dodajHandlarza(Handlarz handlarz)
 {
     this.listaHandlarzy.Add(handlarz);
 }
示例#9
0
 //###################################### METODY ########################################
 /// <summary>
 /// wymiany uzywam ze strategi handlu
 /// </summary>
 /// <param name="handlarz"></param>
 public void WymianaTowaru(Handlarz handlarz)
 {
     strategia.wymianaTowaru(magazyn, handlarz, coSprzedawac);
 }