예제 #1
0
        public static void NézzKörül(Hely itt)
        {
            if (itt == null)
            {
                return;
            }

            //jobbra
            Irány jobbra = Irányít.jobbra(itt.irány);

            if (terep.Itt(itt.poz.sor + jobbra.Item1, itt.poz.oszlop + jobbra.Item2) == Típus.Út &&
                !terep.voltamItt[itt.poz.sor + jobbra.Item1, itt.poz.oszlop + jobbra.Item2])
            {
                itt.jobbra = new Hely {
                    poz = new Poz {
                        sor = itt.poz.sor + jobbra.Item1, oszlop = itt.poz.oszlop + jobbra.Item2
                    }, irány = jobbra
                };
                terep.voltamItt[itt.jobbra.poz.sor, itt.jobbra.poz.oszlop] = true;
            }


            //balra
            Irány balra = Irányít.balra(itt.irány);

            if (terep.Itt(itt.poz.sor + balra.Item1, itt.poz.oszlop + balra.Item2) == Típus.Út &&
                !terep.voltamItt[itt.poz.sor + balra.Item1, itt.poz.oszlop + balra.Item2])
            {
                itt.balra = new Hely {
                    poz = new Poz {
                        sor = itt.poz.sor + balra.Item1, oszlop = itt.poz.oszlop + balra.Item2
                    }, irány = balra
                };
                terep.voltamItt[itt.balra.poz.sor, itt.balra.poz.oszlop] = true;
            }

            //előre
            if (terep.Itt(itt.poz.sor + itt.irány.Item1, itt.poz.oszlop + itt.irány.Item2) == Típus.Út &&
                !terep.voltamItt[itt.poz.sor + itt.irány.Item1, itt.poz.oszlop + itt.irány.Item2])
            {
                itt.előre = new Hely {
                    poz = new Poz {
                        sor = itt.poz.sor + itt.irány.Item1, oszlop = itt.poz.oszlop + itt.irány.Item2
                    }, irány = itt.irány
                };
                terep.voltamItt[itt.előre.poz.sor, itt.előre.poz.oszlop] = true;
            }
        }
예제 #2
0
        public static void Menj(Hely innen)
        {
            if (innen == null)
            {
                return;
            }
            else if (innen.poz.sor == terep.Méret - 1 && innen.poz.oszlop == terep.Méret - 1)
            {
                throw new ArgumentException();
            }

            NézzKörül(innen);
            Menj(innen.előre);
            Menj(innen.jobbra);
            Menj(innen.balra);
        }
예제 #3
0
        public static bool PathFinder(string t)
        {
            terep = new Terep(t);

            Hely start = new Hely {
                poz = new Poz {
                    sor = 0, oszlop = 0
                }, irány = new Irány(1, 0)
            };

            terep.voltamItt[start.poz.sor, start.poz.oszlop] = true;

            try {
                Menj(start);
            } catch (ArgumentException) {
                return(true);
            }

            return(false);
        }