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)); } } } }
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"); } }