private void RysujBudynki(GeneratorPrzestrzeni generatorBudynkow)
        {
            foreach (Prostokat budynek in generatorBudynkow.Budynki)
            {
                string folder = $"Budynek{GeneratorLosowosci.Next(1, 6)}";

                for (int i = 0; i < budynek.Szerokosc; ++i)
                {
                    for (int j = 0; j < budynek.Wysokosc; ++j)
                    {
                        Image obrazek = null;

                        if (i == 0 && j == 0)
                        {
                            obrazek = TworzObrazek($@"Budynki\{folder}\LewaGora.png");
                        }
                        else if (i == 0 && j + 1 == budynek.Wysokosc)
                        {
                            obrazek = TworzObrazek($@"Budynki\{folder}\LewyDol.png");
                        }
                        else if (i == 0)
                        {
                            obrazek = TworzObrazek($@"Budynki\{folder}\LewySrodek.png");
                        }

                        else if (i + 1 == budynek.Szerokosc && j == 0)
                        {
                            obrazek = TworzObrazek($@"Budynki\{folder}\PrawaGora.png");
                        }
                        else if (i + 1 == budynek.Szerokosc && j + 1 == budynek.Wysokosc)
                        {
                            obrazek = TworzObrazek($@"Budynki\{folder}\PrawyDol.png");
                        }
                        else if (i + 1 == budynek.Szerokosc)
                        {
                            obrazek = TworzObrazek($@"Budynki\{folder}\PrawySrodek.png");
                        }

                        else if (j == 0)
                        {
                            obrazek = TworzObrazek($@"Budynki\{folder}\SrodkowaGora.png");
                        }
                        else if (j + 1 == budynek.Wysokosc)
                        {
                            obrazek = TworzObrazek($@"Budynki\{folder}\SrodkowyDol.png");
                        }
                        else
                        {
                            obrazek = TworzObrazek($@"Budynki\{folder}\SrodkowySrodek.png");
                        }

                        UstawPozycjeObiektu(obrazek, new Punkt <double>((budynek.Pozycja.X + i) * 40, (budynek.Pozycja.Y + j) * 40));
                    }
                }
            }
        }
        public GeneratorPoziomu(Canvas rodzicObrazkow, int szerokosc, int wysokosc, int liczbaWejsc)
        {
            generatorPolaczen = new GeneratorPolaczenSamochodow(szerokosc, wysokosc, liczbaWejsc);
            GeneratorZnakowPoziomych generatorPasow    = new GeneratorZnakowPoziomych(generatorPolaczen);
            GeneratorPrzestrzeni     generatorBudynkow = new GeneratorPrzestrzeni(szerokosc, wysokosc, generatorPolaczen);

            generatorPolaczenPieszych = new GeneratorPolaczenPieszych(szerokosc, wysokosc, generatorPolaczen, generatorBudynkow);

            RysujDrogi();
            RysujBudynki(generatorBudynkow);
            RysujMape(generatorBudynkow);
            //RysujKonturChodnika();
            RysujPasy(generatorPasow);
        }
 private void RysujMape(GeneratorPrzestrzeni generatorBudynkow)
 {
     for (int i = 0; i < generatorBudynkow.Mapa.GetLength(0); ++i)
     {
         for (int j = 0; j < generatorBudynkow.Mapa.GetLength(1); ++j)
         {
             if (generatorBudynkow.Mapa[i, j] == TypPrzestrzeni.Chodnik || generatorBudynkow.Mapa[i, j] == TypPrzestrzeni.Droga)
             {
                 RysujChodnik(new Punkt <double>(i, j));
             }
             else if (generatorBudynkow.Mapa[i, j] == TypPrzestrzeni.Nic)
             {
                 RysujOzdobe(new Punkt <double>(i, j));
             }
         }
     }
 }
예제 #4
0
        public GeneratorPolaczenPieszych(int rozmiarMapyX, int rozmiarMapyY, GeneratorPolaczenSamochodow generatorPolaczen, GeneratorPrzestrzeni generatorBudynkow)
        {
            GRANICA_DOLNA = rozmiarMapyY * 2 - 1;
            GRANICA_PRAWA = rozmiarMapyX * 2 - 1;

            WierzcholkiChodnikow = generatorBudynkow.WierzcholkiChodnikow;
            Chodniki             = generatorBudynkow.Chodniki;

            OdwzorujChodnikiZDrog(generatorPolaczen);
            LaczChodniki();
            RedukujPolaczenia();
            OznaczPunktyWejscia();

            PrzeszukiwanieDFS przeszukiwanieDFS = new PrzeszukiwanieDFS(WierzcholkiChodnikow.ConvertAll(o => (WierzcholekGrafu)o));

            if (!przeszukiwanieDFS.CzyGrafSpojny())
            {
                throw new Exception("Graf połączeń pieszych nie spójny");
            }
        }