Avatar
Okurkin
Člen
Avatar
Okurkin:

Zdravím, dělal jsem bludiště podle tutoriálu, který je zde : http://www.itnetwork.cz/…eho-bludiste
, bohužel se nevytváří průchozí.... Mohl by mi prosím někdo poradit???

public static Random generator = new Random();
        static void Main(string[] args)
        {
            int[,] pole = new int[21, 21];
            naplnitpole(pole);
            vytvoreni_bludiste(pole);
            vypispole(pole);
            Console.ReadLine();
        }
        static int[,] vytvoreni_bludiste(int[,] pole)
        {

            while (pocet_zakladu_v_poli(pole) > 0)
            {
                int souradnicey = vyhledanizakladny(pole)[0];
                int souradnicex = vyhledanizakladny(pole)[1];
                int smer = generator.Next(1, 5);
                if (smer == 1)
                {

                    while (true)
                    {
                        pole[souradnicey, souradnicex] = 2;
                        souradnicey--;
                        if (pole[souradnicey, souradnicex] == 1 || pole[souradnicey, souradnicex] == 2)
                            break;
                        pole[souradnicey, souradnicex] = 2;

                    }

                }
                if (smer == 2)
                {

                    while (true)
                    {

                        pole[souradnicey, souradnicex] = 2;
                        souradnicey++;
                        if (pole[souradnicey, souradnicex] == 1 || pole[souradnicey, souradnicex] == 2)
                            break;

                        pole[souradnicey, souradnicex] = 2;

                    }


                }
                if (smer == 3)
                {

                    while (true)
                    {
                        pole[souradnicey, souradnicex] = 2;
                        souradnicex++;
                        if (pole[souradnicey, souradnicex] == 1 || pole[souradnicey, souradnicex] == 2)
                            break;

                        pole[souradnicey, souradnicex] = 2;

                    }


                }
                if (smer == 4)
                {
                    while (true)
                    {
                        pole[souradnicey, souradnicex] = 2;
                        souradnicex--;
                        if (pole[souradnicey, souradnicex] == 1 || pole[souradnicey, souradnicex] == 2)
                            break;

                        pole[souradnicey, souradnicex] = 2;

                    }

                }
            }

            return pole;
        }
        static int[] vyhledanizakladny(int[,] pole)
        {
            int[] souradnice = new int[2];
            int nahodnecislo = generator.Next(1, (pocet_zakladu_v_poli(pole) + 1));
            int scitac = 0;
            for (int i = 0; i < pole.GetLength(0); i++)
            {
                for (int j = 0; j < pole.GetLength(1); j++)
                {
                    if (pole[i, j] == 3)
                    {
                        scitac++;
                        if (scitac == nahodnecislo)
                        {
                            souradnice[0] = i;
                            souradnice[1] = j;
                        }
                    }
                }
            }

            return souradnice;
        }
        static int[,] naplnitpole(int[,] pole)
        {
            for (int i = 0; i < pole.GetLength(0); i++)
            {
                for (int j = 0; j < pole.GetLength(1); j++)
                {

                    if (i < pole.GetLength(0) / 2 && j < pole.GetLength(1) / 2)
                        pole[i * 2, j * 2] = 3;
                    if (i == 0 || i == pole.GetLength(0) - 1 || j == 0 || j == pole.GetLength(1) - 1)
                        pole[i, j] = 1;

                }
            }
            return pole;
        } // pripravi pole pro naplneni bludiste
        static int pocet_zakladu_v_poli(int[,] pole)
        {
            int counter = 0;
            for (int i = 0; i < pole.GetLength(0); i++)
            {
                for (int j = 0; j < pole.GetLength(1); j++)
                {
                    if (pole[i, j] == 3)
                        counter++;
                }
            }

            return counter;
        } // zjistuje kolik zakladu je v poli (pole[i,j] =3)
        static void vypispole(int[,] pole)
 
Odpovědět 19.4.2015 18:10
Avatar
fik...
Člen
Avatar
Odpovídá na Okurkin
fik...:

Ve vytvoreni_bludite změň:

int souradnicey = vyhledanizakladny(pole)[0];
int souradnicex = vyhledanizakladny(pole)[1];

na:

int[] zakladna = vyhledanizakladny(pole);
int souradnicey = zakladna[0];
int souradnicex = zakladna[1];

Problém je v tom, že si najdeš základnu její souřadnici Y přiřadíš do proměnné "souradnicey" a potom si najdeš jinou a přiřadíš ji do druhé souřadnice. Takže potom každá souřadnice patří k jiné základně.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 19.4.2015 19:01
Avatar
Okurkin
Člen
Avatar
Okurkin:

Děkuji moc... Už jsem to zoufale hledal a nevyděl jsem... Tková debilní chbya.... Díky.... :)

 
Nahoru Odpovědět 19.4.2015 20:02
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.