/// <summary> /// /// Ak je firma prvov�robn�, tak je mo�n�, �e sa jej mno�stvo vyroben�ch produktov zmen� /// Ak nie je prvov�robn�, tak sa vyr�ba pod�a toho, ko�ko sa pr�jme /// </summary> public void ZmenProdukciu(){ var kluce = new List<TypPrepravJednotky>(aProdukuje.Keys); foreach (TypPrepravJednotky kluc in kluce) { if (aProdukuje[kluc] != 0) { aProdukuje[kluc] = Nahoda.TriaInt(cMinProd, aProdukuje[kluc], cMaxProd); } } }
/// <summary> /// Inicializ�cia mesta, v�ber n�zvu a n�hodne zvolenie po�iato�nej popul�cia pod�a trojuholn�kov�ho rozdelenia /// </summary> /// <param name="paPoloha">poloha</param> /// <param name="paPoradoveCislo">poradsov� ��slo</param> public Mesto(Poloha paPoloha, int paPoradoveCislo): base(DruhVyroby.Mesto, paPoloha) { aDen = 0; aPoradoveCislo = paPoradoveCislo; int poradie = 0; foreach( NazvyMiest nazov in Enum.GetValues(typeof(NazvyMiest))) { if(aPoradoveCislo == poradie) { Nazov = nazov.ToString(); break; } poradie++; } Populacia = Nahoda.TriaInt(100, 300, 400); this.ZmenPrirastok(); }
/// <summary> /// Vyrobenie - teda vznikn� cestuj�ci a po�ta /// </summary> public void Vyrob() { if(Zoskupenie != null) { int temp = Populacia / cIntervalDni; int pocetCestujucich = temp/5; if (pocetCestujucich > 0) { pocetCestujucich = Nahoda.TriaInt(pocetCestujucich - 1, pocetCestujucich, pocetCestujucich + 2); } else { pocetCestujucich = 1; } int pocetPosty = temp / 10; if (pocetPosty > 0) { pocetPosty = Nahoda.TriaInt(pocetPosty - 1, pocetPosty, pocetPosty + 2); } else { pocetPosty = 1; } for (int i = 0; i < pocetCestujucich; i++) { Zoskupenie.NechajCakat(new PrepravJednotka(TypPrepravJednotky.cestujuci)); } for (int i = 0; i < pocetPosty; i++) { Zoskupenie.NechajCakat(new PrepravJednotka(TypPrepravJednotky.posta)); } Console.WriteLine("Mesto, cest: " + pocetCestujucich + ", post: " + pocetPosty); } }
/// <summary> /// Vyrobanie nejak�ho po�tu v�robn�ch jednotiek. Produkcia je vypo��tana �iasto�ne metematick�mi vz�ahmi /// z celkovej produknie za mesiac a m��e by� upraven� pomocou trojuholn�kov�ho rozdelenia /// </summary> public void Vyrob(){ if (aPrilahlaStanica != null && !aPrilahlaStanica.Uzamknute) { int dnesnaProdukcia = 0; double temp = 0; foreach (var item in aProdukuje) { temp = (double)item.Value / (double)30; dnesnaProdukcia = (int)Math.Round(temp, MidpointRounding.AwayFromZero); if (dnesnaProdukcia > 0) { dnesnaProdukcia = Nahoda.TriaInt(dnesnaProdukcia-1, dnesnaProdukcia, dnesnaProdukcia+1); } for (int i = 0; i < dnesnaProdukcia; i++) { aPrilahlaStanica.NechajCakat(new PrepravJednotka(item.Key)); } Console.WriteLine(item.Key + " " + dnesnaProdukcia); } } }