Example #1
0
 private void provjeriNedovrseneVrhove()
 {
     if (nedovrseniVrhovi.Count > 0)
     {
         oznaceniVrh = nedovrseniVrhovi.ElementAt(nedovrseniVrhovi.Count - 1);
         red         = oznaceniVrh.red;
         stupac      = oznaceniVrh.stupac;
         oznaceniVrh.nedovrseniVrh = true;
         izaberiPrviSlobodanSmjer();
     }
     else
     {
         return;
     }
 }
Example #2
0
        private void kreirajIzlaz()
        {
            Vrh vrh = new Vrh();

            vrh.naziv     = dodjeliNazivVrhu();
            vrh.ulazIzlaz = '2';
            vrh.red       = red;
            vrh.stupac    = stupac;
            vrhovi.Add(vrh);

            Brid brid = new Brid();

            brid.vrh1   = oznaceniVrh;
            brid.vrh2   = vrh;
            brid.tezina = tezina;
            tezina      = 0;
            bridovi.Add(brid);

            provjeriNedovrseneVrhove();
        }
Example #3
0
 private void pronadiUlaz()
 {
     for (int i = 0; i < labirintMatrica.GetLength(0); i++)
     {
         if (labirintMatrica[i, 0] == 1)
         {
             Vrh vrh = new Vrh();
             vrh.naziv     = nazivVrha.ToString();
             vrh.ulazIzlaz = '1';
             vrh.red       = i;
             red           = i;
             vrh.stupac    = 0;
             stupac        = 0;
             vrhovi.Add(vrh);
             oznaceniVrh = vrh;
             smjer       = "desno";
             tezina      = 0;
             break;
         }
     }
     pomakniSe();
 }
Example #4
0
        private void ispitajPolozaj()
        {
            bool vrhPostoji = false;

            if (nedovrseniVrhovi.Count > 0)
            {
                Vrh vrhZaObrisati = null;
                foreach (var vrh in nedovrseniVrhovi)
                {
                    if (vrh.red == red && vrh.stupac == stupac)
                    {
                        vrhPostoji = true;
                        if (smjer == "desno")
                        {
                            vrh.lijevo = false;
                        }
                        else if (smjer == "gore")
                        {
                            vrh.dolje = false;
                        }
                        else if (smjer == "lijevo")
                        {
                            vrh.desno = false;
                        }
                        else if (smjer == "dolje")
                        {
                            vrh.gore = false;
                        }

                        Brid brid = new Brid();
                        brid.vrh1   = vrh;
                        brid.vrh2   = oznaceniVrh;
                        brid.tezina = tezina;
                        bridovi.Add(brid);
                        tezina = 0;

                        if (!vrh.desno && !vrh.gore && !vrh.lijevo && !vrh.dolje)
                        {
                            vrhZaObrisati = vrh;
                        }
                        break;
                    }
                }

                if (vrhZaObrisati != null)
                {
                    nedovrseniVrhovi.Remove(vrhZaObrisati);
                }

                if (vrhPostoji)
                {
                    provjeriNedovrseneVrhove();
                }
            }


            if (!vrhPostoji)
            {
                bool naprijed       = false;
                bool drugaDvaSmjera = false;
                if (smjer == "desno" || smjer == "lijevo")
                {
                    if (smjer == "desno")
                    {
                        if (labirintMatrica[red, stupac + 1] == 1)
                        {
                            naprijed = true;
                        }
                    }
                    else if (smjer == "lijevo")
                    {
                        if (labirintMatrica[red, stupac - 1] == 1)
                        {
                            naprijed = true;
                        }
                    }
                    if (labirintMatrica[red + 1, stupac] == 1 || labirintMatrica[red - 1, stupac] == 1)
                    {
                        drugaDvaSmjera = true;
                    }
                }
                else if (smjer == "gore" || smjer == "dolje")
                {
                    if (smjer == "gore")
                    {
                        if (labirintMatrica[red - 1, stupac] == 1)
                        {
                            naprijed = true;
                        }
                    }
                    else if (smjer == "dolje")
                    {
                        if (labirintMatrica[red + 1, stupac] == 1)
                        {
                            naprijed = true;
                        }
                    }
                    if (labirintMatrica[red, stupac + 1] == 1 || labirintMatrica[red, stupac - 1] == 1)
                    {
                        drugaDvaSmjera = true;
                    }
                }

                if (!drugaDvaSmjera && naprijed)
                {
                    pomakniSe();
                }
                else if ((!drugaDvaSmjera && !naprijed) || drugaDvaSmjera)
                {
                    kreirajVrh();
                }
            }
        }
Example #5
0
        private void kreirajVrh()
        {
            Vrh vrh = new Vrh();

            vrh.naziv  = dodjeliNazivVrhu();
            vrh.red    = red;
            vrh.stupac = stupac;

            Brid brid = new Brid();

            brid.vrh1   = oznaceniVrh;
            brid.vrh2   = vrh;
            brid.tezina = tezina;
            tezina      = 0;

            bridovi.Add(brid);

            int brojSmjerova = 0;

            if (smjer == "desno")
            {
                if (labirintMatrica[red, stupac + 1] == 1) //desno
                {
                    vrh.desno = true;
                    brojSmjerova++;
                }
                if (labirintMatrica[red - 1, stupac] == 1) //gore
                {
                    vrh.gore = true;
                    brojSmjerova++;
                }
                if (labirintMatrica[red + 1, stupac] == 1) //dolje
                {
                    vrh.dolje = true;
                    brojSmjerova++;
                }
            }
            else if (smjer == "gore")
            {
                if (labirintMatrica[red, stupac + 1] == 1) //desno
                {
                    vrh.desno = true;
                    brojSmjerova++;
                }
                if (labirintMatrica[red - 1, stupac] == 1) //gore
                {
                    vrh.gore = true;
                    brojSmjerova++;
                }
                if (labirintMatrica[red, stupac - 1] == 1) //lijevo
                {
                    vrh.lijevo = true;
                    brojSmjerova++;
                }
            }
            else if (smjer == "lijevo")
            {
                if (labirintMatrica[red - 1, stupac] == 1) //gore
                {
                    vrh.gore = true;
                    brojSmjerova++;
                }
                if (labirintMatrica[red, stupac - 1] == 1) //lijevo
                {
                    vrh.lijevo = true;
                    brojSmjerova++;
                }
                if (labirintMatrica[red + 1, stupac] == 1) //dolje
                {
                    vrh.dolje = true;
                    brojSmjerova++;
                }
            }
            else if (smjer == "dolje")
            {
                if (labirintMatrica[red, stupac + 1] == 1) //desno
                {
                    vrh.desno = true;
                    brojSmjerova++;
                }
                if (labirintMatrica[red, stupac - 1] == 1) //lijevo
                {
                    vrh.lijevo = true;
                    brojSmjerova++;
                }
                if (labirintMatrica[red + 1, stupac] == 1) //dolje
                {
                    vrh.dolje = true;
                    brojSmjerova++;
                }
            }

            vrhovi.Add(vrh);

            if (brojSmjerova >= 2)
            {
                nedovrseniVrhovi.Add(vrh);
            }

            if (brojSmjerova >= 1)
            {
                oznaceniVrh = vrh;
                izaberiPrviSlobodanSmjer();
            }
            else
            {
                provjeriNedovrseneVrhove();
            }
        }