private void KontrolaZeleznicaRovnaVlavo(Policko paPolicko, Policko paSusednePolicko) { if (paSusednePolicko.Zastavane is Zeleznica) { SmerInf smerPredchodcu = (paSusednePolicko.Zastavane as Zeleznica).Orientacia; if (smerPredchodcu == SmerInf.horizontalny) { if (paSusednePolicko.Vrchol == null) { PosunHranu(paPolicko, paSusednePolicko); } else { VytvorNovuHranu(paPolicko, paSusednePolicko); } } else if (smerPredchodcu == SmerInf.zatackaDoleVpravo || smerPredchodcu == SmerInf.zatackaHoreVpravo) { VytvorNovuHranu(paPolicko, paSusednePolicko); } else { VytvorNovuHranu(paPolicko); } } else if (paSusednePolicko.Zastavane is ZeleznicnaStanica) { if ((paSusednePolicko.Zastavane as ZeleznicnaStanica).SmerZastavky == SmerZast.horizontalny) { VytvorNovuHranu(paPolicko, paSusednePolicko); } else { VytvorNovuHranu(paPolicko); } } else { VytvorNovuHranu(paPolicko); } }
private void KontrolaVrcholZeleznicaHore(Policko paPolicko, Policko paSusednePolicko) { if (paSusednePolicko.Zastavane is Zeleznica) { SmerInf smerPredchodcu = (paSusednePolicko.Zastavane as Zeleznica).Orientacia; if (smerPredchodcu == SmerInf.vertikalny) { if (paSusednePolicko.Vrchol == null) { VytvorVrcholNapojenyNaHranu(paPolicko, paSusednePolicko); } else { VytvorVrcholVedlaVrcholu(paPolicko, paSusednePolicko); } } else if (smerPredchodcu == SmerInf.zatackaDoleVlavo || smerPredchodcu == SmerInf.zatackaDoleVpravo) { VytvorVrcholVedlaVrcholu(paPolicko, paSusednePolicko); } else { VyrvorVrchol(paPolicko); } } else if (paSusednePolicko.Zastavane is ZeleznicnaStanica) { if ((paSusednePolicko.Zastavane as ZeleznicnaStanica).SmerZastavky == SmerZast.vertikalny) { VytvorVrcholVedlaVrcholu(paPolicko, paSusednePolicko); } else { VyrvorVrchol(paPolicko); } } else { VyrvorVrchol(paPolicko); } }
public Zeleznica(SmerInf paSmer, Poloha paPoloha){ base.ZburatelneAutomaticky = false; Poloha = paPoloha; aOrientacia = paSmer; switch (aOrientacia) { case SmerInf.horizontalny: NastavObrazok(Resources.zelVodorovne, "zelVodorovne"); Cena = 300; break; case SmerInf.vertikalny: NastavObrazok(Resources.zelZvisle, "zelZvisle"); Cena = 300; break; case SmerInf.zatackaDoleVlavo: NastavObrazok(Resources.zelOdbVlavoDole, "zelOdbVlavoDole"); Cena = 320; break; case SmerInf.zatackaDoleVpravo: NastavObrazok(Resources.zelOdbVpravoDole, "zelOdbVpravoDole"); Cena = 320; break; case SmerInf.zatackaHoreVlavo: NastavObrazok(Resources.zelOdbVlavoHore, "zelOdbVlavoHore"); Cena = 320; break; case SmerInf.zatackaHoreVpravo: NastavObrazok(Resources.zelOdbVpravoHore, "zelOdbVlavoHore"); Cena = 320; break; } NakladyNaZburanie = 20; Povolene = DruhVozidla.kolajove; }
/// <summary> /// proces vytvαrania grafu /// </summary> private void VytvorGraf(int paRiadok, int paStlpec) { Policko aktualnePolicko = aMatica[paRiadok, paStlpec]; Policko susednePolicko; if (aktualnePolicko.Zastavane is Cesta) { SmerCesty smer = (aktualnePolicko.Zastavane as Cesta).Orientacia; switch (smer) { case SmerCesty.vodorovne: susednePolicko = aMatica[paRiadok, paStlpec - 1]; if (aktualnePolicko.Prostriedky()) { KontrolaVrcholCestyVlavo(aktualnePolicko, susednePolicko); } else { KontrolaRovnaCestaLava(aktualnePolicko, susednePolicko); } break; case SmerCesty.zvisle: susednePolicko = aMatica[paRiadok - 1, paStlpec]; if (aktualnePolicko.Prostriedky()) { KontrolaVrcholCestyHore(aktualnePolicko, susednePolicko); } else { KontrolaRovnaCestaHore(aktualnePolicko, susednePolicko); } break; case SmerCesty.zakHoreVpravo: case SmerCesty.odbZvysleVpravo: susednePolicko = aMatica[paRiadok - 1, paStlpec]; KontrolaVrcholCestyHore(aktualnePolicko, susednePolicko); break; case SmerCesty.zakDoleVlavo: case SmerCesty.odbVodorovneDole: susednePolicko = aMatica[paRiadok, paStlpec - 1]; KontrolaVrcholCestyVlavo(aktualnePolicko, susednePolicko); break; case SmerCesty.krizovatka: case SmerCesty.odbVodorovneHore: case SmerCesty.odbZvysleVlavo: case SmerCesty.zakHoreVlavo: susednePolicko = aMatica[paRiadok - 1, paStlpec]; KontrolaVrcholCestyHore(aktualnePolicko, susednePolicko); susednePolicko = aMatica[paRiadok, paStlpec - 1]; KontrolaVrcholCestyVlavo(aktualnePolicko, susednePolicko); break; case SmerCesty.zakDoleVpravo: VyrvorVrchol(aktualnePolicko); break; } } else if (aktualnePolicko.Zastavane is Zastavka) { SmerZast smerZ = (aktualnePolicko.Zastavane as Zastavka).SmerZast; if (smerZ == SmerZast.horizontalny) { susednePolicko = aMatica[paRiadok, paStlpec - 1]; KontrolaVrcholCestyVlavo(aktualnePolicko, susednePolicko); } else { susednePolicko = aMatica[paRiadok - 1, paStlpec]; KontrolaVrcholCestyHore(aktualnePolicko, susednePolicko); } } else if (aktualnePolicko.Zastavane is Zeleznica) { SmerInf smer = (aktualnePolicko.Zastavane as Zeleznica).Orientacia; if (smer == SmerInf.horizontalny) { susednePolicko = aMatica[paRiadok, paStlpec - 1]; if (aktualnePolicko.Prostriedky()) { KontrolaVrcholZeleznicaVlavo(aktualnePolicko, susednePolicko); } else { KontrolaZeleznicaRovnaVlavo(aktualnePolicko, susednePolicko); } } else if (smer == SmerInf.vertikalny) { susednePolicko = aMatica[paRiadok - 1, paStlpec]; if (aktualnePolicko.Prostriedky()) { KontrolaVrcholZeleznicaHore(aktualnePolicko, susednePolicko); } else { KontrolaZeleznicaRovnaHore(aktualnePolicko, susednePolicko); } } else if (smer == SmerInf.zatackaHoreVpravo) { susednePolicko = aMatica[paRiadok - 1, paStlpec]; KontrolaVrcholZeleznicaHore(aktualnePolicko, susednePolicko); } else if (smer == SmerInf.zatackaHoreVlavo) { susednePolicko = aMatica[paRiadok - 1, paStlpec]; KontrolaVrcholZeleznicaHore(aktualnePolicko, susednePolicko); susednePolicko = aMatica[paRiadok, paStlpec - 1]; KontrolaVrcholZeleznicaVlavo(aktualnePolicko, susednePolicko); } else if (smer == SmerInf.zatackaDoleVlavo) { susednePolicko = aMatica[paRiadok, paStlpec - 1]; KontrolaVrcholZeleznicaVlavo(aktualnePolicko, susednePolicko); } else if (smer == SmerInf.zatackaDoleVpravo) { VyrvorVrchol(aktualnePolicko); } } else if (aktualnePolicko.Zastavane is ZeleznicnaStanica) { if ((aktualnePolicko.Zastavane as ZeleznicnaStanica).SmerZastavky == SmerZast.horizontalny) { susednePolicko = aMatica[paRiadok, paStlpec - 1]; KontrolaVrcholZeleznicaVlavo(aktualnePolicko, susednePolicko); } else { susednePolicko = aMatica[paRiadok - 1, paStlpec]; KontrolaVrcholZeleznicaHore(aktualnePolicko, susednePolicko); } } }