public Prisera(int x, int y, AbsolutniSmer smer, bool[,] bludiste) { poziceX = x; poziceY = y; this.Smer = smer; this.bludiste = bludiste; }
public static Prisera ReadMaze(int sirka, int vyska) { bool[,] bludiste = new bool[vyska, sirka]; int x = 0, y = 0; AbsolutniSmer s = AbsolutniSmer.Nahoru; for (int i = 0; i < vyska; i++) { for (int j = 0; j < sirka; j++) { char c = (char)Console.Read(); switch (c) { case 'X': bludiste[i, j] = true; break; case '>': y = i; x = j; s = AbsolutniSmer.Doprava; break; case '<': y = i; x = j; s = AbsolutniSmer.Doleva; break; case '^': y = i; x = j; s = AbsolutniSmer.Nahoru; break; case 'v': y = i; x = j; s = AbsolutniSmer.Dolu; break; } } Console.ReadLine(); } return(new Prisera(x, y, s, bludiste)); }
bool JeTamZed(RelativniOrientace kde) { AbsolutniSmer absolutniSmer = (AbsolutniSmer)(((int)Smer + (int)kde) % 4); switch (absolutniSmer) { case AbsolutniSmer.Nahoru: return(poziceY != 0 && bludiste[poziceY - 1, poziceX]); case AbsolutniSmer.Dolu: return(poziceY != bludiste.GetUpperBound(0) && bludiste[poziceY + 1, poziceX]); case AbsolutniSmer.Doleva: return(poziceX != 0 && bludiste[poziceY, poziceX - 1]); case AbsolutniSmer.Doprava: return(poziceX != bludiste.GetUpperBound(1) && bludiste[poziceY, poziceX + 1]); default: return(false); } }
void OtocSe(RelativniOrientace kam) { Smer = (AbsolutniSmer)(((int)Smer + (int)kam) % 4); }