2. Von objektorientierten Ameisen
2. Von objektorientierten Ameisen
2. Von objektorientierten Ameisen
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Schließlich und endlich zu den Kämpfern. Wir wollen verhindern, dass eine Ameise,<br />
die auf der anderen Seite des Spielfeldes steht, einen Angriff auf den viel zu weit<br />
entfernten Käfer startet. Mehr noch: Die Kämpfer-<strong>Ameisen</strong> sollen alle vorhandenen<br />
Käfer in der Liste prüfen, und zu dem laufen, der am nächsten ist:<br />
case "Kämpfer":<br />
{<br />
if (Ziel == null && Ortsspeicher.KäferOrt.Count > 1)<br />
//Ameise hat kein Ziel und die "Gedächtnisdatenbank" ist nicht leer<br />
{<br />
int entfernung = 2000; int entfernungVariabel = 2000;<br />
int indexMin = 0;<br />
for (int i = 0; i < 60; i++)<br />
{<br />
Käfer käfer0 = Ortsspeicher.LiesKäfer(i);<br />
Aufgabe 7<br />
}<br />
}<br />
if (käfer0 == null) //Käfer0 existiert nicht oder ist zwischenzeitlich gestorben!<br />
Ortsspeicher.OrtLoeschen(käfer0);<br />
else<br />
{<br />
entfernungVariabel = Koordinate.BestimmeEntfernung(this, käfer0);<br />
if (entfernung > entfernungVariabel)<br />
{<br />
entfernung = entfernungVariabel;<br />
indexMin = i;<br />
}<br />
}<br />
käfer0 = null;<br />
Käfer käfer1 = Ortsspeicher.LiesKäfer(indexMin);<br />
if ((!(käfer1 == null)) && (!Ortsspeicher.GeloeschterOrt.Contains(käfer1)) &&<br />
(Koordinate.BestimmeEntfernung(this, käfer1) < 700))<br />
{ GeheZuZiel(käfer1); }<br />
//Letzte Bedingung: Ameise sollte nicht zu weit weg vom Käfer sein.<br />
GeheGeradeaus(50);//sonst bleiben sie nach der Jagd stehen!<br />
if (Reichweite - ZurückgelegteStrecke - 100 < EntfernungZuBau)<br />
GeheZuBau();<br />
if (AktuelleEnergie < MaximaleEnergie * 2 / 3)<br />
GeheZuBau();<br />
}<br />
break;<br />
• Versuchen Sie, die Tick()-Anweisungen für die drei <strong>Ameisen</strong>-Typen<br />
nachzuvollziehen. Wo könnten andere Werte getestet werden. Sehen Sie<br />
weitere Möglichkeiten der Optimierung?<br />
• Vervollständigen Sie mit den obigen Vorgaben die Vorlage.cs , die Sie in<br />
Kämpfer.cs umtaufen.<br />
46