AntMe! - Auf der Nahrungssuche: Unterschied zwischen den Versionen

Aus DMUW-Wiki
Wechseln zu: Navigation, Suche
K
K
Zeile 143: Zeile 143:
 
|}
 
|}
  
{{#ev:youtube|efIZe9VwRes|600}}
+
 
 +
{| class="wikitable"
 +
|-
 +
| {{#ev:youtube|efIZe9VwRes|600}} ||
 +
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 soll.
 +
Dafür gibt es folgende Methode:<br />
 +
<tt>'''LasseNahrungFallen()'''</tt><br /><br />Die Ameise lässt die gerade getragene Nahrung fallen. Zucker geht dabei verloren, Äpfel bleiben liegen und können wieder aufgenommen werden. Der Befehl muss nicht ausgeührt werden um Nahrung in den Bau zu schaffen. Das passiert automatisch.<br />
 +
<div align="right">siehe auch:{{pdf|Krüger_Befehlsliste.pdf|Befehlsliste}}<ref name="AntMe-HP">Quelle: [http://antme.net http://antme.net]</ref><div>
 +
|}
 +
 
 +
== Quellen ==
 +
<references />

Version vom 11. Februar 2010, 18:11 Uhr

Mathematik-digital Pfeil-3d.png
Lernpfad

Auf der Nahrungssuche


Teil 2 der Lernpfadgruppe: Programmieren mit AntMe!

Pdf20.gif Kompetenzaufbau


  Aufgabe   Stift.gif


Wie könnten die Methoden Sieht(Zucker zucker) und ZielErreicht(Zucker zucker) aussehen?

public override void Sieht(Zucker zucker)
{

                    (zucker);

}

public override void ZielErreicht(Zucker zucker)
{

                    (zucker);

                    ();

}

NimmGeheZuZielGeheZuBau

Ziel dieses Lernpfads: Unsere Ameisen wollen das auch können.

Krüger ZuckerHolen.gif
Etwas Unerwartetes tritt auf.

1. Was passiert mit den Ameisen?

Sie holen sich den Zucker am Zuckerberg und bringen ihn in ihren Bau.
Sie laufen zum Zuckerberg, nehmen sich ein Stück Zucker und bleiben stehen.
Sie ignorieren den Zuckerberg und laufen weiter, ohne Zucker.

2. Welche Methode muss für das richtige Verhalten angepasst werden?

ZielErreicht(Zucker zucker) und Sieht(Zucker zucker)
ZielErreicht(Zucker zucker)
Sieht(Zucker zucker)
diese Implementierung ist falsch und muss grundsätzlich verändert werden

3. Mit welcher Methode geschieht das Erwünschte?

public override void Sieht(Zucker zucker)
{
if (AktuelleEnergie > 5)
su{
un 2GeheZuZiel(zucker);
is}
}
public override void Sieht(Zucker zucker)
{
t if (AktuelleLast == 0)
ri{
chtiGeheZuZiel(zucker);
g.}
}
public override void ZielErreicht(Zucker zucker)
{
ööNimm(zucker);
üüDreheUmWinkel(180);
ääGeheZuBau();
}

Punkte: 0 / 0


  Aufgabe   Stift.gif


Implementiere die richtige Lösung in deinen Quellcode, so dass die Ameisen den Zucker in ihren Bau tragen.

Die Ameisen bringen den Zucker in ihren Bau. Vergleiche deine Lösung mit dem Video.[Anzeigen]

In der Methode (etsih)(Zucker zucker) wenden wir einen Trick an. Das Problem ist: die Ameisen bleiben mit ihrem (eurzkc) am Berg stehen. Sie machen das, weil sie den Zucker aufnehmen und beim Weggehen erneut die (thodeme) Sieht(Zucker zucker) aufgerufen wird. Mit einer if- (bungedgni) überprüfen wir, ob die Ameise bereits eine (aslt) 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 (titrabut) der Klasse (maesie), welches das getragene Gewicht der Ameise speichert.

   

  Aufgabe   Stift.gif
Krüger Red Apple.jpg


1. Überlege dir mit deinem Nachbarn ein Verfahren, so dass die Ameisen einen Apfel nach Hause tragen.
2. Nutze die Methode BrauchtNochTräger(obst), damit die Ameisen den Apfel schneller in den Bau tragen.



  Aufgabe   Stift.gif

Finde die Wörter! (Waagrecht (von links nach rechts), senkrecht (von oben nach unten) und schräg (von links unten nach rechts oben oder von oben links nach unten rechts), gefundene Wörter werden grün markiert)
Gesuchte Wörter: [Anzeigen]

EKXCCTVONOAITRRTKHMS
PTAAYJSDODGSBVZFXWSN
IZNMCAVZNGAQLUGLUFRW
ZGFOEFGIVLWLFQJNNWJR
GIYDFIEEEBNRILHHWLGD
FNVLIFSLAKNTIUFQVYBZ
BRMSTWLECFXKFHNOOYFH
MEUHQEIRBWLYBMVLPGOS
VDEJUOHREJXMURWTTKTX
FIHTWSUEDSMPHRWUUATV
SPKJQWPIYAMWNPQRXZET
IAKWGOUCXDNYXICSTPJS
YJSOOZKHZVUGWMASVXUZ
QUGVDZTTHFADEGLNMKDY
VVPDQFMWBGDKFGEMRIJT
EPKBKBYOSKPIIWRCIVTQ
LILLULVYIVBZNARIUHGA
WCMYIPMCKMMYQQKQFVDM
NQPSRLMRXRBRQZENKFPT
CRLUTOCFUOAPFCSKMVEE
DCZOECCYBBIPKSCTDXMN
  1. __________________
  2. __________________
  3. __________________
  4. __________________
  5. __________________


Krüger Angriff.png

Für den Schutz der Ameisen betrachten wir diese beiden Methoden. Mit Hilfe einer intelligenten Routine sterben in Zukunft weniger Ameisen.

/// <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)
{
}


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 soll. Dafür gibt es folgende Methode:
LasseNahrungFallen()

Die Ameise lässt die gerade getragene Nahrung fallen. Zucker geht dabei verloren, Äpfel bleiben liegen und können wieder aufgenommen werden. Der Befehl muss nicht ausgeührt werden um Nahrung in den Bau zu schaffen. Das passiert automatisch.

siehe auch:Pdf20.gif Befehlsliste[1]

Quellen

  1. Quelle: http://antme.net