public void PunktBędącyNieckąNieMaNastępnika() { var aktualizator = new AktualizatorNastepstwaMapyWysokosci(); IPunkt punktPoczatkowy = _mapa.Komorki.ElementAt(2).Punkt; punktPoczatkowy.Wysokosc = 0; // niecka _mapa.ZastosujPrzetwarzanie(aktualizator); IGeneratorRzeki generatorRzeki = new GeneratorRzeki(punktPoczatkowy); generatorRzeki.PunktPoczatkowy.Nastepnik.ShouldBeNull(); }
public void GdyDwieRzekiSi꣹cząTaKrótszaSięKończyADłuższaPłynieDalejGrubsza(bool najpierwKrotsza) { var aktualizator = new AktualizatorNastepstwaMapyWysokosci(); IPunkt punktPoczatkowyKrotszej = _mapa.Komorki.ElementAt(3).Punkt; IPunkt punktPoczatkowyDluzszej = _mapa.Komorki.ElementAt(4).Punkt; _mapa.Rogi.ElementAt(1).Punkt.Sasiedzi.Remove(_mapa.Rogi.ElementAt(0).Punkt); _mapa.Rogi.ElementAt(2).Punkt.Sasiedzi.Remove(_mapa.Rogi.ElementAt(0).Punkt); // usuwamy te sąsiedztwa, żeby rzeka płynęła przez k2 IPunkt ujscie = _mapa.Komorki.ElementAt(1).Punkt; ujscie.Wysokosc = 1.5f; // żeby mieć pewność, że z r3 spływa do k2, a nie do r2 IRog brzeg = _mapa.Komorki.ElementAt(0).Rogi.First(); brzeg.Dane.Brzeznosc = BrzeznoscRogu.Brzeg; _mapa.ZastosujPrzetwarzanie(aktualizator); IGeneratorRzeki generatorKrotszejRzeki = new GeneratorRzeki(punktPoczatkowyKrotszej); IGeneratorRzeki generatorDluzszejRzeki = new GeneratorRzeki(punktPoczatkowyDluzszej); IRzeka krotsza; IRzeka dluzsza; if (najpierwKrotsza) { _mapa.ZastosujPrzetwarzanie(generatorKrotszejRzeki as IPrzetwarzaczMapy); krotsza = _mapa.Rzeki.ElementAt(0); generatorKrotszejRzeki.UdaloSieUtworzyc.Value.ShouldBeTrue(); krotsza.Odcinki.Last().PunktB.ShouldEqual(brzeg.Punkt); _mapa.ZastosujPrzetwarzanie(generatorDluzszejRzeki as IPrzetwarzaczMapy); dluzsza = _mapa.Rzeki.ElementAt(1); } else { _mapa.ZastosujPrzetwarzanie(generatorDluzszejRzeki as IPrzetwarzaczMapy); dluzsza = _mapa.Rzeki.ElementAt(0); generatorDluzszejRzeki.UdaloSieUtworzyc.Value.ShouldBeTrue(); dluzsza.Odcinki.Last().PunktB.ShouldEqual(brzeg.Punkt); _mapa.ZastosujPrzetwarzanie(generatorKrotszejRzeki as IPrzetwarzaczMapy); krotsza = _mapa.Rzeki.ElementAt(1); } generatorDluzszejRzeki.UdaloSieUtworzyc.Value.ShouldBeTrue(); _mapa.Rzeki.Count().ShouldEqual(2); krotsza.Odcinki.Last().PunktB.ShouldEqual(ujscie); dluzsza.Odcinki.Last().PunktB.ShouldEqual(brzeg.Punkt); krotsza.Odcinki.Count.ShouldEqual(2); // k4-r3-k2 dluzsza.Odcinki.Count.ShouldEqual(4); // k5-r4-r2-k2-r1 krotsza.Odcinki.ToList().ForEach(o => o.Grubosc.ShouldEqual(GeneratorRzeki.GruboscJednostkowa)); dluzsza.Odcinki.Take(3).ToList().ForEach(o => o.Grubosc.ShouldEqual(GeneratorRzeki.GruboscJednostkowa)); krotsza.Odcinki.Skip(3).ToList().ForEach(o => o.Grubosc.ShouldEqual(GeneratorRzeki.GruboscJednostkowa*2)); }
public ProstyModyfikatorWysokosci() { Nastepnik = new AktualizatorNastepstwaMapyWysokosci(); }
public void UstawPunktomNastepstwaMapyWysokosci() { var aktualizator = new AktualizatorNastepstwaMapyWysokosci(); aktualizator.Przetwarzaj(Poziom._mapa); }
public void RzekaSpływającaDoNieckiNieTworzySię() { _mapa.Komorki.ElementAt(1).Punkt.Wysokosc = 0; // niecka var aktualizator = new AktualizatorNastepstwaMapyWysokosci(); IPunkt punktPoczatkowy = _mapa.Komorki.ElementAt(2).Punkt; IGeneratorRzeki generatorRzeki = new GeneratorRzeki(punktPoczatkowy); _mapa.ZastosujPrzetwarzanie(aktualizator); _mapa.ZastosujPrzetwarzanie(generatorRzeki as IPrzetwarzaczMapy); generatorRzeki.UdaloSieUtworzyc.Value.ShouldBeFalse(); _mapa.Rzeki.Count().ShouldEqual(0); }
public void RzekaSpływającaDoMorzaPrzezKomorkeTworzySięPoprawnie(Podloze podlozeK2, TypKomorki typK2) { var aktualizator = new AktualizatorNastepstwaMapyWysokosci(); IPunkt punktPoczatkowy = _mapa.Komorki.ElementAt(2).Punkt; _mapa.Komorki.ElementAt(1).Dane.Podloze = podlozeK2; _mapa.Komorki.ElementAt(1).Dane.Typ = typK2; IRog brzeg = _mapa.Komorki.ElementAt(0).Rogi.First(); brzeg.Dane.Brzeznosc = BrzeznoscRogu.Brzeg; _mapa.ZastosujPrzetwarzanie(aktualizator); IGeneratorRzeki generatorRzeki = new GeneratorRzeki(punktPoczatkowy); _mapa.ZastosujPrzetwarzanie(generatorRzeki as IPrzetwarzaczMapy); generatorRzeki.UdaloSieUtworzyc.Value.ShouldBeTrue(); _mapa.Rzeki.Count().ShouldEqual(1); _mapa.Rzeki.First().Odcinki.Last().PunktB.ShouldEqual(brzeg.Punkt); _mapa.Rzeki.First().Odcinki.Count.ShouldEqual(2); // k3-r2-r1 _mapa.Komorki.ElementAt(2).Punkt.ZawieraRzeke.ShouldBeTrue(); _mapa.Rogi.ElementAt(1).Punkt.ZawieraRzeke.ShouldBeTrue(); _mapa.Rogi.ElementAt(0).Punkt.ZawieraRzeke.ShouldBeTrue(); }