/// <summary>
        /// jedna z potrebnύch kontrτl
        /// </summary>
        /// <param name="paPolicko">na ktorom polνθku</param>
        /// <param name="paSusednePolicko">susednι polνθko</param>
        private void KontrolaVrcholCestyVlavo(Policko paPolicko, Policko paSusednePolicko)
        {

            if (paSusednePolicko.Zastavane is Cesta)
            {
                SmerCesty smerPredchodcu = (paSusednePolicko.Zastavane as Cesta).Orientacia;
                if (smerPredchodcu == SmerCesty.vodorovne)
                {
                    if (paSusednePolicko.Vrchol == null)
                    {
                        VytvorVrcholNapojenyNaHranu(paPolicko, paSusednePolicko);
                    }
                    else
                    {
                        VytvorVrcholVedlaVrcholu(paPolicko, paSusednePolicko);
                    }

                }
                else if (smerPredchodcu == SmerCesty.zakDoleVpravo || smerPredchodcu == SmerCesty.zakHoreVpravo ||
                    smerPredchodcu == SmerCesty.krizovatka || smerPredchodcu == SmerCesty.odbVodorovneDole ||
                    smerPredchodcu == SmerCesty.odbVodorovneHore || smerPredchodcu == SmerCesty.odbZvysleVpravo)
                {
                    VytvorVrcholVedlaVrcholu(paPolicko, paSusednePolicko);
                }
                else
                {
                    VyrvorVrchol(paPolicko);
                }
            }
            else if (paSusednePolicko.Zastavane is Zastavka)
            {
                if ((paSusednePolicko.Zastavane as Zastavka).SmerZast == SmerZast.horizontalny)
                {
                    VytvorVrcholVedlaVrcholu(paPolicko, paSusednePolicko);
                }
                else
                {
                    VyrvorVrchol(paPolicko);
                }
            }
            else
            {
                VyrvorVrchol(paPolicko);
            }
        }
 /// <summary>
 /// jedna z potrebnύch kontrτl
 /// </summary>
 /// <param name="paPolicko">na ktorom polνθku</param>
 /// <param name="paSusednePolicko">susednι polνθko</param>
 private void KontrolaRovnaCestaLava(Policko paPolicko, Policko paSusednePolicko)
 {
     if (paSusednePolicko.Zastavane is Cesta)
     {
         SmerCesty smerPredchodcu = (paSusednePolicko.Zastavane as Cesta).Orientacia;
         if (smerPredchodcu == SmerCesty.vodorovne)
         {
             if (paSusednePolicko.Vrchol == null)
             {
                 PosunHranu(paPolicko, paSusednePolicko);
             }
             else
             {
                 VytvorNovuHranu(paPolicko, paSusednePolicko);
             }
         }
         else if (smerPredchodcu == SmerCesty.zakDoleVpravo || smerPredchodcu == SmerCesty.zakHoreVpravo ||
             smerPredchodcu == SmerCesty.krizovatka || smerPredchodcu == SmerCesty.odbVodorovneDole ||
             smerPredchodcu == SmerCesty.odbVodorovneHore || smerPredchodcu == SmerCesty.odbZvysleVpravo)
         {
             VytvorNovuHranu(paPolicko, paSusednePolicko);
         }
         else
         {
             VytvorNovuHranu(paPolicko);
         }
     }
     else if (paSusednePolicko.Zastavane is Zastavka)
     {
         if ((paSusednePolicko.Zastavane as Zastavka).SmerZast == SmerZast.horizontalny)
         {
             VytvorNovuHranu(paPolicko, paSusednePolicko);
         }
         else
         {
             VytvorNovuHranu(paPolicko);
         }
     }
     else
     {
         VytvorNovuHranu(paPolicko);
     }
 }
        /// <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);
                }
            }
        }
Exemple #4
0
        /// <summary>
        /// Cesta + priradenie spr�vnych obr�zkov a s�m, 
        /// pod�a jednotiliv�ch druhov
        /// </summary>
        /// <param name="paSmer"></param>
        /// <param name="paPoloha"></param>
		public Cesta(SmerCesty paSmer, Poloha paPoloha){

            base.ZburatelneAutomaticky = false;
            aOrientacia = paSmer;
            Poloha = paPoloha;

            switch (aOrientacia)
            { 
                case SmerCesty.krizovatka :
                    NastavObrazok(Resources.cestaKri�ovatka, "cestaKri�ovatka");
                    Cena = 300;
                    break;

                case SmerCesty.odbVodorovneDole:
                    NastavObrazok(Resources.cestaOdbVodorovneDole, "cestaOdbVodorovneDole");
                    Cena = 250;
                    break;

                case SmerCesty.odbVodorovneHore:
                    NastavObrazok(Resources.cestaOdbVodorovneHore, "cestaOdbVodorovneHore");
                    Cena = 250;
                    break;

                case SmerCesty.odbZvysleVlavo:
                    NastavObrazok(Resources.cestaOdbZvysleVlavo, "cestaOdbZvysleVlavo");
                    Cena = 250;
                    break;

                case SmerCesty.odbZvysleVpravo:
                    NastavObrazok(Resources.cestaOdbZvysleVpravo, "cestaOdbZvysleVpravo");
                    Cena = 250;
                    break;

                case SmerCesty.vodorovne:
                    NastavObrazok(Resources.cestaVodorovne, "cestaVodorovne");
                    Cena = 200;
                    break;

                case SmerCesty.zakDoleVlavo:
                    NastavObrazok(Resources.cestaZakDoleVlavo, "cestaZakDoleVlavo");
                    Cena = 220;
                    break;

                case SmerCesty.zakDoleVpravo:
                    NastavObrazok(Resources.cestaZakDoleVpravo, "cestaZakDoleVpravo");
                    Cena = 220;
                    break;

                case SmerCesty.zakHoreVpravo:
                    NastavObrazok(Resources.cestaZakHoleVpravo, "cestaZakHoleVpravo");
                    Cena = 220;
                    break;

                case SmerCesty.zakHoreVlavo:
                    NastavObrazok(Resources.cestaZakHoreVlavo, "cestaZakHoreVlavo");
                    Cena = 220;
                    break;

                case SmerCesty.zvisle:
                    NastavObrazok(Resources.cestaZvisle, "cestaZvisle");
                    Cena = 200;
                    break;

            }

            NakladyNaZburanie = 100;
            Povolene = DruhVozidla.cestne;

		}