public void pridejHlavnihoPasazera(Stanice zacatek, Stanice konec, float start) { Pasazer hlavni = new Pasazer(this, "0", zacatek, konec, start); seznamPasazeru.Add(pocetVygenerovanychPasazeru, hlavni); pocetVygenerovanychPasazeru++; Udalost prichodPrvnihoPasazera = new Udalost(start, hlavni, TypUdalosti.prichodDoStanice); kalendar.pridejUdalost(prichodPrvnihoPasazera); }
private void nastupovani() { Pasazer p = null; while ((seznamPasazeru.Count < kapacita) && (p = aktualniStanice.vratPasazeraVeSmeru(smerVice)) != null) { //Console.WriteLine("pasazer " + p.id + " nastupuje v " + model.getCas() + " ve stanici " + aktualniStanice.id + " do " + id); seznamPasazeru.Add(p); } }
private Pasazer vygenerujPasazera(int casPrichodu) { int pocatecniStanice = rand.Next(0, seznamStanic.stanice.Count); int konecnaStanice = rand.Next(0, seznamStanic.stanice.Count); while (konecnaStanice == pocatecniStanice) { konecnaStanice = rand.Next(0, seznamStanic.stanice.Count); //aby se generovali pasazeri, kteri nikam nejedou v podstate } Pasazer p = new Pasazer(this, pocetVygenerovanychPasazeru + "", seznamStanic.stanice.Values[pocatecniStanice], seznamStanic.stanice.Values[konecnaStanice], casPrichodu); return(p); }
private void spawniOstatniPasazery() //kazdejch SPAWN_LIDI_MEZICAS spawni lidi { int pocetLidiKVygenerovani = SPAWN_LIDI_MEZICAS * nastaveni.frekvenceLidi; for (int i = 0; i < pocetLidiKVygenerovani; i++) { int casPrichodu = rand.Next((int)cas, (int)cas + SPAWN_LIDI_MEZICAS); Pasazer p = vygenerujPasazera(casPrichodu); pocetVygenerovanychPasazeru++; seznamPasazeru.Add(pocetVygenerovanychPasazeru, p); Udalost prichodPasazera = new Udalost(p.start, p, TypUdalosti.prichodDoStanice); kalendar.pridejUdalost(prichodPasazera); } }
private void vystupovani() { Pasazer p = null; for (int i = 0; i < seznamPasazeru.Count; i++) { p = seznamPasazeru[i]; if (p.getPristiStanice() == aktualniStanice) { //Console.WriteLine("pasazer " + p.id + " vystupuje v " + model.getCas() + " ve stanici " + aktualniStanice.id + " z " + id); model.pridejDoKalendare(new Udalost(model.getCas(), p, TypUdalosti.prichodDoStanice)); seznamPasazeru.Remove(p); } else { //Console.WriteLine("pasazer nevystupuje protoze akt stanice je " + aktualniStanice.id + " ale chce do " + p.getPristiStanice().id); } } }
public Pasazer vratPasazeraVeSmeru(bool smerVice) { Pasazer p = null; if (smerVice) { if (nastupisteVice.Count > 0) { p = nastupisteVice.Dequeue(); } } else { if (nastupisteMene.Count > 0) { p = nastupisteMene.Dequeue(); } } return(p); }
public void zaradNaNastupiste(Pasazer p, Stanice pristi) { if (pismeno.Equals(pristi.pismeno)) { if (pristi.kilometr > kilometr) { nastupisteVice.Enqueue(p); //Console.WriteLine("pasazer " + p.id + " zařazen do fronty VICE (" + id + "), jede do stanice " + pristi.id); } else { nastupisteMene.Enqueue(p); //Console.WriteLine("pasazer " + p.id + " zařazen do fronty MENE (" + id + "), jede do stanice " + pristi.id); } } else { Console.WriteLine("CHYBAAA"); System.Environment.Exit(1); } }
public void removePasazer(Pasazer p) { seznamPasazeru.Remove(Int32.Parse(p.id)); //Console.WriteLine("removing " + p.id); }