AntMe! - Auf der Nahrungssuche: Unterschied zwischen den Versionen
(Lösungsvideo eingefügt und Gliederung geschrieben) |
(kat AntMe!) |
||
(23 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 18: | Zeile 18: | ||
− | + | Deine Ameisen wollen das auch können.<br /><br /> | |
[[Bild:Krüger_ZuckerHolen.gif|center]] | [[Bild:Krüger_ZuckerHolen.gif|center]] | ||
+ | <br /><br /> | ||
+ | {{Aufgabe-Mathe| | ||
− | + | Wie könnten die Methoden <tt>Sieht(Zucker zucker)</tt> und <tt>ZielErreicht(Zucker zucker)</tt> aussehen? | |
+ | |||
+ | }} | ||
<div class="lueckentext-quiz"> | <div class="lueckentext-quiz"> | ||
<tt> | <tt> | ||
Zeile 41: | Zeile 45: | ||
</tt> | </tt> | ||
</div> | </div> | ||
+ | |||
+ | {{Aufgabe-Mathe| | ||
+ | |||
+ | Implementiere die richtige Lösung in deiner Simulation!<br /> | ||
+ | Welches Verhalten zeigen die Ameisen? Löse dafür das folgende Quiz! | ||
+ | |||
+ | }} | ||
== Etwas Unerwartetes tritt auf == | == Etwas Unerwartetes tritt auf == | ||
Zeile 64: | Zeile 75: | ||
== Wie der Zucker in den Bau kommt == | == Wie der Zucker in den Bau kommt == | ||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | {{Aufgabe-Mathe| | ||
+ | |||
+ | Implementiere die richtige Lösung in deinen Quellcode, so dass die Ameisen den Zucker in ihren Bau tragen. | ||
+ | |||
+ | }} | ||
+ | <br /> | ||
+ | Die Ameisen bringen den Zucker in ihren Bau. Vergleiche deine Lösung mit dem Video.{{versteckt|<br />{{#ev:youtube|YO8AwXn9jVQ|600}}}} | ||
+ | |||
+ | |||
+ | {{Aufgabe-Mathe| | ||
+ | |||
+ | Löse das Schüttel-Rätsel! | ||
+ | |||
+ | }} | ||
<div class="schuettel-quiz"> | <div class="schuettel-quiz"> | ||
In der Methode <tt>'''Sieht'''(Zucker zucker)</tt> 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''' <tt>Sieht(Zucker zucker)</tt> aufgerufen wird. Mit einer <tt>if</tt>-'''Bedingung''' überprüfen wir, ob die Ameise bereits eine '''Last''' trägt.<br /> | In der Methode <tt>'''Sieht'''(Zucker zucker)</tt> 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''' <tt>Sieht(Zucker zucker)</tt> aufgerufen wird. Mit einer <tt>if</tt>-'''Bedingung''' überprüfen wir, ob die Ameise bereits eine '''Last''' trägt.<br /> | ||
Zeile 94: | Zeile 114: | ||
| | ||
− | {{Aufgabe-Mathe |[[Bild:Krüger_Red_Apple.jpg|left|100px]] | + | {{Aufgabe-Mathe | |
+ | |||
+ | [[Bild:Krüger_Red_Apple.jpg|left|100px]] | ||
1. Überlege dir mit deinem Nachbarn ein Verfahren, so dass die Ameisen einen Apfel nach Hause tragen.<br /> | 1. Überlege dir mit deinem Nachbarn ein Verfahren, so dass die Ameisen einen Apfel nach Hause tragen.<br /> | ||
− | 2. Nutze die Methode <tt>BrauchtNochTräger(obst)</tt>, damit die Ameisen den Apfel | + | 2. Nutze die Methode <tt>BrauchtNochTräger(obst)</tt>, damit die Ameisen den Weg zum Apfel nicht umsonst gehen. |
}} | }} | ||
− | |||
== Kommentare interpretieren == | == Kommentare interpretieren == | ||
Zeile 119: | Zeile 140: | ||
| | | | ||
/// <summary> | /// <summary> | ||
− | /// Wird einmal aufgerufen, wenn die Ameise ein Obststück | + | /// Wird einmal aufgerufen, wenn die Ameise ein Obststück |
− | /// bei diesem ankommt. | + | /// als Ziel hat und bei diesem ankommt. |
/// </summary> | /// </summary> | ||
/// <param name="obst">Das Obstück.</param> | /// <param name="obst">Das Obstück.</param> | ||
Zeile 128: | Zeile 149: | ||
/// <summary> | /// <summary> | ||
− | /// Wird wiederholt aufgerufen, wenn die Ameise mindestens | + | /// Wird wiederholt aufgerufen, wenn die Ameise mindestens |
− | /// sieht. | + | /// eine Wanze sieht. |
/// </summary> | /// </summary> | ||
/// <param name="wanze">Die nächstgelegene Wanze.</param> | /// <param name="wanze">Die nächstgelegene Wanze.</param> | ||
Zeile 136: | Zeile 157: | ||
| | | | ||
/// <summary> | /// <summary> | ||
− | /// Wird wiederholt aufgerufen, wenn die Ameise von einer | + | /// Wird wiederholt aufgerufen, wenn die Ameise von einer |
− | /// wird. | + | /// Wanze angegriffen wird. |
/// </summary> | /// </summary> | ||
/// <param name="wanze">Die angreifende Wanze.</param> | /// <param name="wanze">Die angreifende Wanze.</param> | ||
Zeile 150: | Zeile 171: | ||
| | | | ||
/// <summary> | /// <summary> | ||
− | /// Lässt die Ameise in entgegengesetzte Richtung davon laufen | + | /// Lässt die Ameise in entgegengesetzte Richtung |
+ | /// davon laufen | ||
/// </summary> | /// </summary> | ||
− | /// <param name="ziel">Objekt, vor dem weggerannt werden soll</param> | + | /// <param name="ziel">Objekt, vor dem weggerannt |
− | /// <param name="entfernung">Entfernung, die zurückgelegt werden soll</param> | + | /// werden soll</param> |
+ | /// <param name="entfernung">Entfernung, die zurückgelegt | ||
+ | /// werden soll</param> | ||
|| <tt>'''public void GeheWegVon'''(Spielobjekt ziel, int entfernung)</tt> | || <tt>'''public void GeheWegVon'''(Spielobjekt ziel, int entfernung)</tt> | ||
|} | |} | ||
Zeile 159: | Zeile 183: | ||
== Die Flucht vor den Wanzen == | == Die Flucht vor den Wanzen == | ||
+ | |||
{| | {| | ||
Zeile 185: | Zeile 210: | ||
− | + | {{#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 | + | Die Ameisen bringen den Apfel in eine falsche Richtung, wenn ihnen eine Wanze über den Weg läuft. Sie laufen mit einer wesentlich langsameren Geschwindigkeit. Deshalb sollen sie den Zucker oder den Apfel abwerfen. |
Dafür gibt es folgende Methode:<br /><br /> | Dafür gibt es folgende Methode:<br /><br /> | ||
<tt>'''LasseNahrungFallen()'''</tt><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 ausgeführt werden um Nahrung in den Bau zu schaffen. Das passiert automatisch.<br /> | <tt>'''LasseNahrungFallen()'''</tt><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 ausgefü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>Quelle: [http://antme.net http://antme.net]</ref><div> | + | <div align="right">siehe auch:{{pdf|Krüger_Befehlsliste.pdf|Befehlsliste}}<ref>Quelle: [http://antme.net http://antme.net]</ref></div> |
− | + | ||
{{Aufgabe-Mathe| | {{Aufgabe-Mathe| | ||
− | + | ||
− | Schreibe dazu den Quellcode in die Methode <tt>SiehtFeind(Wanze wanze)</tt>, so dass die Ameise ihre Nahrung fallen lässt, wenn sie eine Wanze sieht. | + | Verändere das Verhalten der Ameise!<br /> |
+ | Schreibe dazu den Quellcode in die Methode <tt>SiehtFeind(Wanze wanze)</tt> und <tt>WirdAngegriffen(Wanze wanze)</tt>, so dass die Ameise ihre Nahrung fallen lässt, wenn sie eine Wanze sieht oder angegriffen wird. | ||
+ | |||
}} | }} | ||
{{Lösung versteckt| | {{Lösung versteckt| | ||
Die Implentierung könnte so aussehen: | Die Implentierung könnte so aussehen: | ||
− | {{#ev:7gGcGMH4XpE| | + | {{#ev:youtube|7gGcGMH4XpE|600}} |
+ | }} | ||
+ | |||
+ | |||
+ | {{Aufgabe-Mathe| | ||
+ | |||
+ | Immernoch sterben zu viele Ameisen. Das liegt daran, dass sie die Nahrung nicht fallen lassen, wenn sie müde werden und in ihren Bau wollen.<br /> | ||
+ | Ergänze die fehlende Implementierung bei deinem Ameisenvolk! | ||
+ | |||
+ | }} | ||
+ | {{Lösung versteckt| | ||
+ | public override void WirdMüde() | ||
+ | { | ||
+ | LasseNahrungFallen(); | ||
+ | GeheZuBau(); | ||
+ | } | ||
}} | }} | ||
Zeile 207: | Zeile 248: | ||
<div style="border: 1px solid #dfdfdf; background-color:#dfdfdf; font-size:1px; height:8px; border-bottom:1px solid #dfdfdf;"></div> | <div style="border: 1px solid #dfdfdf; background-color:#dfdfdf; font-size:1px; height:8px; border-bottom:1px solid #dfdfdf;"></div> | ||
<div style="border:1px solid #dfdfdf; background-color:#FEFEFE; align:center; padding:7px;margin-bottom:10px;"> | <div style="border:1px solid #dfdfdf; background-color:#FEFEFE; align:center; padding:7px;margin-bottom:10px;"> | ||
+ | |||
== Das kannst du jetzt == | == Das kannst du jetzt == | ||
− | * den Ameisen eine eigene künstliche Intelligenz zur Nahrungssuche | + | * den Ameisen eine eigene künstliche Intelligenz zur Nahrungssuche beibringen |
− | * die Ameisen vor | + | * die Ameisen vor Wanzen schützen |
* neue Methoden von ''AntMe!'' kennengelernt, die später für die individuelle Stärke des Volkes nützlich sein könnten | * neue Methoden von ''AntMe!'' kennengelernt, die später für die individuelle Stärke des Volkes nützlich sein könnten | ||
</div> | </div> | ||
− | Unsere Ameisen schützen sich jetzt vor den | + | Unsere Ameisen schützen sich jetzt vor den Wanzen. 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. [[../AntMe!_-_Eine_Ameisenstraße|<math>\Rightarrow</math> Zum nächsten Lernpfad: AntMe! - Eine Ameisenstraße]] |
[[../|<math>\Leftarrow</math> zurück zum Hauptmenü]] | [[../|<math>\Leftarrow</math> zurück zum Hauptmenü]] | ||
Zeile 220: | Zeile 262: | ||
== Quellen == | == Quellen == | ||
<references /> | <references /> | ||
+ | |||
+ | |||
+ | [[Kategorie:Lernpfad AntMe!]] |
Aktuelle Version vom 1. Dezember 2011, 22:58 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
Deine 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 langsameren Geschwindigkeit. Deshalb sollen sie den Zucker oder den Apfel abwerfen.
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 ausgeführt werden um Nahrung in den Bau zu schaffen. Das passiert automatisch.
|
Die Implentierung könnte so aussehen:
|
public override void WirdMüde() { LasseNahrungFallen(); GeheZuBau(); }
Das kannst du jetzt
- den Ameisen eine eigene künstliche Intelligenz zur Nahrungssuche beibringen
- die Ameisen vor Wanzen 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 Wanzen. 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