AntMe! - Auf der Nahrungssuche: Unterschied zwischen den Versionen
K |
(Lösungsvideo eingefügt und Gliederung geschrieben) |
||
Zeile 56: | Zeile 56: | ||
- diese Implementierung ist falsch und muss grundsätzlich verändert werden | - diese Implementierung ist falsch und muss grundsätzlich verändert werden | ||
− | { Mit welcher Methode | + | { Mit welcher Methode bringen die Ameisen den Zucker in den Bau? } |
- <div style="border: 1px solid blue;border-style:dashed;"><tt>public override void Sieht(Zucker zucker)<br />{<br /><span style="color:white">Lö</span>if (AktuelleEnergie > 5)<br /><span style="color:white">su</span>{<br /><span style="color:white">un 2</span>GeheZuZiel(zucker);<br /><span style="color:white">is</span>}<br />}</tt></div> | - <div style="border: 1px solid blue;border-style:dashed;"><tt>public override void Sieht(Zucker zucker)<br />{<br /><span style="color:white">Lö</span>if (AktuelleEnergie > 5)<br /><span style="color:white">su</span>{<br /><span style="color:white">un 2</span>GeheZuZiel(zucker);<br /><span style="color:white">is</span>}<br />}</tt></div> | ||
+ <div style="border: 1px solid blue;border-style:dashed;"><tt>public override void Sieht(Zucker zucker)<br />{<br /><span style="color:white">t </span>if (AktuelleLast == 0)<br /><span style="color:white">ri</span>{<br /><span style="color:white">chti</span>GeheZuZiel(zucker);<br /><span style="color:white">g.</span>}<br />}</tt></div> | + <div style="border: 1px solid blue;border-style:dashed;"><tt>public override void Sieht(Zucker zucker)<br />{<br /><span style="color:white">t </span>if (AktuelleLast == 0)<br /><span style="color:white">ri</span>{<br /><span style="color:white">chti</span>GeheZuZiel(zucker);<br /><span style="color:white">g.</span>}<br />}</tt></div> | ||
Zeile 62: | Zeile 62: | ||
</quiz> | </quiz> | ||
− | {| | + | == Wie der Zucker in den Bau kommt == |
+ | |||
+ | {| | ||
|- | |- | ||
| {{Aufgabe-Mathe|<br />Implementiere die richtige Lösung in deinen Quellcode, so dass die Ameisen den Zucker in ihren Bau tragen.<br /><br />}} | | {{Aufgabe-Mathe|<br />Implementiere die richtige Lösung in deinen Quellcode, so dass die Ameisen den Zucker in ihren Bau tragen.<br /><br />}} | ||
Zeile 100: | Zeile 102: | ||
}} | }} | ||
+ | |||
+ | |||
+ | == Kommentare interpretieren == | ||
Zeile 152: | Zeile 157: | ||
|} | |} | ||
</div> | </div> | ||
+ | |||
+ | == Die Flucht vor den Wanzen == | ||
{| | {| | ||
Zeile 193: | Zeile 200: | ||
}} | }} | ||
{{Lösung versteckt| | {{Lösung versteckt| | ||
− | + | Die Implentierung könnte so aussehen: | |
+ | {{#ev:7gGcGMH4XpE|600px}} | ||
}} | }} | ||
Version vom 24. Februar 2010, 10:57 Uhr
Lernpfad
|
Ziele des Lernpfads
- neue unbekannte Methoden von AntMe! entdecken und anwenden
- Logikfehler in der Programmierung erkennen und verbessern
- Äpfel und Zucker in den Bau tragen
- Routinen programmieren, welche die Ameisen vor Wanzen schützen
Unsere Ameisen wollen das auch können.
|
- public override void Sieht(Zucker zucker)
- {
- GeheZuZiel(zucker);
- }
- public override void ZielErreicht(Zucker zucker)
- {
- Nimm(zucker);
- GeheZuBau();
- }
Etwas Unerwartetes tritt auf
Wie der Zucker in den Bau kommt
|
Die Ameisen bringen den Zucker in ihren Bau. Vergleiche deine Lösung mit dem Video. |
In der Methode Sieht(Zucker zucker) wenden wir einen Trick an. Das Problem ist: die Ameisen bleiben mit ihrem Zucker am Berg stehen. Sie machen das, weil sie den Zucker aufnehmen und beim Weggehen erneut die Methode Sieht(Zucker zucker) aufgerufen wird. Mit einer if-Bedingung überprüfen wir, ob die Ameise bereits eine Last trägt.
Den alten Code:
public override void Sieht(Zucker zucker) { GeheZuZiel(zucker); }
ändern wir wie folgt ab:
public override void Sieht(Zucker zucker) { if (AktuelleLast == 0) { GeheZuZiel(zucker); } }
AktuelleLast ist ein Attribut der Klasse Ameise, welches das getragene Gewicht der Ameise speichert.
|
Kommentare interpretieren
|
/// <summary> /// Wird einmal aufgerufen, wenn die Ameise ein Obststück als Ziel hat und /// bei diesem ankommt. /// </summary> /// <param name="obst">Das Obstück.</param> |
public override void ZielErreicht(Obst obst) |
/// <summary> /// Wird wiederholt aufgerufen, wenn die Ameise mindestens eine Wanze /// sieht. /// </summary> /// <param name="wanze">Die nächstgelegene Wanze.</param> |
public override void SiehtFeind(Wanze wanze) |
/// <summary> /// Wird wiederholt aufgerufen, wenn die Ameise von einer Wanze angegriffen /// wird. /// </summary> /// <param name="wanze">Die angreifende Wanze.</param> |
public override void WirdAngegriffen(Wanze wanze) |
/// <summary> /// Liefert die aktuelle Last /// </summary> |
public int AktuelleLast() |
/// <summary> /// Lässt die Ameise in entgegengesetzte Richtung davon laufen /// </summary> /// <param name="ziel">Objekt, vor dem weggerannt werden soll</param> /// <param name="entfernung">Entfernung, die zurückgelegt werden soll</param> |
public void GeheWegVon(Spielobjekt ziel, int entfernung) |
Die Flucht vor den Wanzen
Die Ameisen bringen den Apfel in eine falsche Richtung, wenn ihnen eine Wanze über den Weg läuft. Sie laufen mit einer wesentlich langsamer, weshalb sie den Zucker oder den Apfel abwerfen sollen.
Dafür gibt es folgende Methode: |
Veränder das Verhalten der Ameise! |
Die Implentierung könnte so aussehen:
Das kannst du jetzt
- den Ameisen eine eigene künstliche Intelligenz zur Nahrungssuche entwickeln
- die Ameisen vor Feinden schützen
- neue Methoden von AntMe! kennengelernt, die später für die individuelle Stärke des Volkes nützlich sein könnten
Unsere Ameisen schützen sich jetzt vor den Käfern. Arbeite den nächsten Lernpfad durch, indem sich die Ameisen durch eine geschickte Kommunikationen vor Feinden warnen und die Nahrung gemeinsam in den Bau bringen. Zum nächsten Lernpfad: AntMe! - Eine Ameisenstraße
Quellen
- ↑ Quelle: http://antme.net