Beispiel #1
0
 public Prohledavacka(Stav pocatecniStav, Vektor cil, bool[,] bludiste)
 {
     this.cil      = cil;
     this.bludiste = bludiste;
     aktualniStav  = pocatecniStav;
     frontaStavu.Enqueue(aktualniStav);
 }
Beispiel #2
0
        public static Stav PrectiSkladiste(out bool[,] bludiste, out Vektor cil)
        {
            Vektor skladnik = null, bedna = null;

            bludiste = new bool[10, 10];
            cil      = null;
            for (int y = 0; y < 10; y++)
            {
                for (int x = 0; x < 10; x++)
                {
                    int c = Console.Read();
                    switch (c)
                    {
                    case 'X':
                        bludiste[x, y] = true;
                        break;

                    case 'C':
                        cil = new Vektor(x, y);
                        break;

                    case 'S':
                        skladnik = new Vektor(x, y);
                        break;

                    case 'B':
                        bedna = new Vektor(x, y);
                        break;
                    }
                }
                Console.ReadLine();
            }

            return(new Stav(skladnik, bedna, 0));
        }
Beispiel #3
0
        void PohniSeSmerem(Vektor smer)
        {
            Vektor novySkladnik = aktualniStav.Skladnik.Posun(smer);
            Vektor novaBedna    = aktualniStav.Bedna;

            if (JeTamZed(novySkladnik) || (JeTamBedna(novySkladnik) && !LzePosunoutBednuSmerem(smer)))
            {
                return;
            }

            if (JeTamBedna(novySkladnik))
            {
                novaBedna = novaBedna.Posun(smer);
            }

            Stav novyStav = new Stav(novySkladnik, novaBedna, aktualniStav.Vzdalenost + 1);

            frontaStavu.Enqueue(novyStav);
        }
Beispiel #4
0
        bool LzePosunoutBednuSmerem(Vektor smer)
        {
            Vektor posun = aktualniStav.Bedna.Posun(smer);

            return(!JeTamZed(posun));
        }
Beispiel #5
0
 bool JeTamBedna(Vektor kde)
 {
     return(kde.Equals(aktualniStav.Bedna));
 }
Beispiel #6
0
 bool JeTamZed(Vektor kde)
 {
     return(kde.X < 0 || kde.X >= 10 ||
            kde.Y < 0 || kde.Y >= 10 ||
            bludiste[kde.X, kde.Y]);
 }
Beispiel #7
0
 public Stav(Vektor skladnik, Vektor bedna, int vzdalenost)
 {
     Skladnik   = skladnik;
     Bedna      = bedna;
     Vzdalenost = vzdalenost;
 }
Beispiel #8
0
 public Vektor Posun(Vektor kam)
 {
     return(new Vektor(X + kam.X, Y + kam.Y));
 }