public Kante(Knoten startknotenEintragen, Knoten endknotenEintragen, double übertragungsdauerEintragen) { this.SetStartKnoten(startknotenEintragen); this.SetEndKnoten(endknotenEintragen); this.SetÜbertragungsDauer(übertragungsdauerEintragen); }
// Nachbarn ermitteln public Knoten[] GetNachbarn(Knoten knotenSuchtNachbarn, int anzahlZellenxAchse, int anzahlZellenyAchse) { Knoten[] nachbarn = new Knoten[4]; // 0 ist rechts, 1 ist oben, 2 ist links, 3 ist unten int rechterNachbar = knotenSuchtNachbarn.GetKnotennummer() + 1; int obererNachbar = knotenSuchtNachbarn.GetKnotennummer() - anzahlZellenxAchse; int linkerNachbar = knotenSuchtNachbarn.GetKnotennummer() - 1; int untererNachbar = knotenSuchtNachbarn.GetKnotennummer() + anzahlZellenxAchse; if (knotenSuchtNachbarn.GetKnotennummer() % anzahlZellenxAchse != (anzahlZellenxAchse - 1)) { nachbarn[0] = Knotenmenge[rechterNachbar]; } else { nachbarn[0] = NegativKnoten; } if (knotenSuchtNachbarn.GetKnotennummer() >= anzahlZellenxAchse) { nachbarn[1] = Knotenmenge[obererNachbar]; } else { nachbarn[1] = NegativKnoten; } if (knotenSuchtNachbarn.GetKnotennummer() % anzahlZellenxAchse != 0) { nachbarn[2] = Knotenmenge[linkerNachbar]; } else { nachbarn[2] = NegativKnoten; } if (knotenSuchtNachbarn.GetKnotennummer() < anzahlZellenxAchse * (anzahlZellenyAchse - 1)) { nachbarn[3] = Knotenmenge[untererNachbar]; } else { nachbarn[3] = NegativKnoten; } return(nachbarn); }
// Knotenkonstruktion private async Task <Knoten[]> Knotenkonstruieren(int anzahlKnotenxAchse, int anzahlKnotenyAchse) { return(await Task.Run(() => { for (int zeile = 0; zeile < anzahlKnotenyAchse; zeile++) { for (int knotennummer = (zeile) * anzahlKnotenxAchse; knotennummer < (zeile + 1) * anzahlKnotenxAchse; knotennummer++) { int xKoordinate = knotennummer - zeile * anzahlKnotenxAchse; int yKoordinate = zeile; double infektionszeit = KnopVerteilungsZahlenGeneratorInfektionszeit(_übertragungsrateAlpha, _standardabweichungÜbertragungsrate); Knotenmenge[knotennummer] = new Knoten(knotennummer, xKoordinate, yKoordinate, infektionszeit); } } return Knotenmenge; })); }
// Infiziere Nachbarn public void InfiziereNachbarn(Knoten knoten) { int count = 0; for (int i = 0; i < 4; i++) { if (Kantenmenge[knoten.GetKnotennummer(), i].GetÜbertragungsDauer() != _geschlossen && Kantenmenge[knoten.GetKnotennummer(), i].GetEndknoten().GetZustand() == 0) { Kantenmenge[knoten.GetKnotennummer(), i].GetEndknoten().SetbisherigeZeit(knoten.GetBisherigeZeit() + Kantenmenge[knoten.GetKnotennummer(), i].GetÜbertragungsDauer()); //Kantenmenge[knoten.GetKnotennummer(), i].GetEndknoten().ZustandVerändert() += KnotenZustandVerändert; Kantenmenge[knoten.GetKnotennummer(), i].GetEndknoten().Infiziere(); } else { Kantenmenge[knoten.GetKnotennummer(), i].SetÜbertragungsDauer(_geschlossen); count++; } } if (count == 4) { knoten.SetIstEndknoten(true); } }
private void ButtonKonstruktion_Click(object sender, RoutedEventArgs e) { // anzahlZellenBreit = (int)sliderxAchse.Value; // anzahlZellenHoch = (int)slideryAchse.Value; int gesamtAnzahlKnoten = anzahlZellenBreit * anzahlZellenHoch; // Grundarrays Initialisieren Rectangle[,] felder = new Rectangle[ProgrammWPFGame._anzahly, ProgrammWPFGame._anzahlx]; Knoten NegativKnoten = new Knoten(-1, -1, -1, -1.0); NegativKnoten.SetInfektionszeit(-1.0); Knoten[] Knotenmenge = new Knoten[gesamtAnzahlKnoten]; // Krankheitsausbreitung Knotenmenge = Programm.KrankheitsAusbreitung(); // Konstruktion der visuellen Ausgabe for (int knoten = 0; knoten < gesamtAnzahlKnoten; knoten++) { SolidColorBrush myBrush = new SolidColorBrush(); var Rechteck = new Rectangle { Width = zeichenfläche.ActualWidth / anzahlZellenBreit - 0.1, Height = zeichenfläche.ActualHeight / anzahlZellenHoch - 0.1 }; if (CheckBox_Endknoten.IsChecked.HasValue && CheckBox_Endknoten.IsChecked.Value) { if (Knotenmenge[knoten].GetBisherigeZeit() != 0 && Knotenmenge[knoten].GetIstEndknoten()) { myBrush.Color = Color.FromRgb(190, ByteKonstruktion(Knotenmenge[knoten].GetBisherigeZeit(), MaximumBisherigeZeit(Knotenmenge)), 0); Rechteck.Fill = myBrush; } else if (Knotenmenge[knoten].GetBisherigeZeit() != 0 && Knotenmenge[knoten].GetIstEndknoten() == false) { myBrush.Color = Color.FromRgb(100, 100, 100); Rechteck.Fill = myBrush; } else { myBrush.Color = Color.FromRgb(20, 17, 29); Rechteck.Fill = myBrush; } } else { if (Knotenmenge[knoten].GetBisherigeZeit() != 0) { myBrush.Color = Color.FromRgb(190, ByteKonstruktion(Knotenmenge[knoten].GetBisherigeZeit(), MaximumBisherigeZeit(Knotenmenge)), 0); Rechteck.Fill = myBrush; } else { myBrush.Color = Color.FromRgb(20, 17, 29); Rechteck.Fill = myBrush; } } zeichenfläche.Children.Add(Rechteck); Canvas.SetLeft(Rechteck, Knotenmenge[knoten].GetXKoordinate() * zeichenfläche.ActualWidth / anzahlZellenBreit); Canvas.SetTop(Rechteck, Knotenmenge[knoten].GetYKoordinate() * zeichenfläche.ActualHeight / anzahlZellenHoch); felder[Knotenmenge[knoten].GetYKoordinate(), Knotenmenge[knoten].GetXKoordinate()] = Rechteck; } felder[anzahlZellenBreit / 2, anzahlZellenHoch / 2].Fill = Brushes.White; }
public void SetStartKnoten(Knoten startknotenEintragen) { this._startKnoten = startknotenEintragen; }
public void SetEndKnoten(Knoten endknotenEintragen) { this._endKnoten = endknotenEintragen; }