예제 #1
0
        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);
            }
        }
예제 #2
0
 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);
     }
 }
예제 #3
0
		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;
            
		}
예제 #4
0
        /// <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);
                }
            }
        }