NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Okurkin
Člen
Avatar
Okurkin:19.4.2015 18:10

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...:19.4.2015 19:01

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í
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
19.4.2015 19:01
Avatar
Okurkin
Člen
Avatar
Okurkin:19.4.2015 20:02

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.