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; } }
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); }
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); }