14.12.2012 Aufrufe

2. Von objektorientierten Ameisen

2. Von objektorientierten Ameisen

2. Von objektorientierten Ameisen

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!