2. Von objektorientierten Ameisen
2. Von objektorientierten Ameisen
2. Von objektorientierten Ameisen
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
}<br />
}<br />
break;<br />
case "Arbeiter":<br />
{<br />
Arbeiter.Wartet(this);<br />
}<br />
break;<br />
}<br />
(Auch wenn dort kein Code für das Wartet()-Ereignis ausgeführt wäre, führt der obige<br />
Aufruf zu keiner Fehlermeldung.)<br />
Und so wartet die Spion-Klasse:<br />
public static void Wartet(Ameise ameise)<br />
{<br />
ameise.GeheGeradeaus(100);<br />
ameise.DreheUmWinkel(Zufall.Zahl(-20, 20));<br />
}<br />
Die konkreten Zahlen (100 und 20) sind ziemlich willkürlich und sollten unbedingt<br />
optimiert werden!<br />
Das Warten()-Ereignis der Arbeiter:<br />
public static void Wartet(Ameise ameise)<br />
{<br />
if (ameise.EntfernungZuBau > 400) //außerhalb gibt es keine Nahrung!<br />
{<br />
ameise.GeheZuBau();<br />
}<br />
}<br />
Aufgabe 8<br />
Schreiben Sie in die allgemeine Klasse Allgemein_GedächtnisWahl die Ereignisse<br />
mit Parameter Sieht(Zucker zucker) , Sieht(Obst obst) und Sieht(Käfer käfer).<br />
Gleichgültig welcher <strong>Ameisen</strong>typ etwas sieht, immer sollen die Koordinaten des<br />
gesehenen Objekts in der Liste gespeichert werden.<br />
Bei Sieht(Käfer, käfer) muss man bedenken, dass Chronos- und Spionameisen<br />
möglichst schnell fliehen sollten. Die Kämpferameisen hingegen greifen sofort an.<br />
(Eine mögliche Teil-Lösung am Ende des Kapitels)<br />
In der gleichen Klasse sollten noch zwei Ereignisse, die in der reinen Kämpferkolonie<br />
unnötig waren, festgelegt werden:<br />
public override void ZielErreicht(Zucker zucker)<br />
{<br />
50