AntMe! - Das große Krabbeln beginnt: Unterschied zwischen den Versionen

Aus DMUW-Wiki
Wechseln zu: Navigation, Suche
K
(kat AntMe!)
 
(21 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
<language>Java</language>
 
 
{{Lernpfad-M|<big>'''Das große Krabbeln beginnt'''</big>
 
{{Lernpfad-M|<big>'''Das große Krabbeln beginnt'''</big>
 
__NOTOC__
 
__NOTOC__
Zeile 20: Zeile 19:
  
 
{{Kasten blau|Notwendige Installationen für AntMe!<br />
 
{{Kasten blau|Notwendige Installationen für AntMe!<br />
(Die Programme können nur von einem Benutzer installierten werden, der auch alle nötigen Rechte auf dem PC hat.)<br />
+
(Die Programme können nur von einem Benutzer installierten werden, der auch alle nötigen Rechte, Schreiben und Ausführen, auf dem PC hat.)<br />
* [http://www.microsoft.com/germany/express/download/webdownload.aspx Microsoft Visual C# Express]
+
* [http://www.microsoft.com/germany/express/download/webdownload.aspx Microsoft Visual C# 2008 Express Edition]
 
* [http://antme.net/files/ AntMe!]
 
* [http://antme.net/files/ AntMe!]
 
}}
 
}}
  
 +
 +
== Die Installation ==
  
 
{{Aufgabe-Mathe|
 
{{Aufgabe-Mathe|
 +
 
<!--[[Bild:SS_MSVC.jpg|Screenshot Microsoft Visual C# Express|300px|right]]-->
 
<!--[[Bild:SS_MSVC.jpg|Screenshot Microsoft Visual C# Express|300px|right]]-->
Sieh dir das folgende Video an und stelle es nach.<br />
+
Sieh dir das folgende Video an und reproduziere es an deinem PC nach.<br />
'''Hinweis:''' Für eine bessere Qualität gibt es YouTubeHD. Wechsel dafür im Menü auf 720p.<br /><br />
+
'''Hinweis:''' Für eine bessere Qualität gibt es YouTubeHD. Wechsel dafür im Menü auf 720p oder klicke einmal auf das Video. Dadurch öffnet sich ein neues Fenster wo der Vollbildmodus aktiviert ist.<br /><br />
 
:{{#ev:youtube|0PFCQUzaAxs|650|center}}
 
:{{#ev:youtube|0PFCQUzaAxs|650|center}}
 +
 
}}
 
}}
  
Zeile 38: Zeile 41:
  
 
{{Aufgabe-Mathe|
 
{{Aufgabe-Mathe|
Übernehme die Einstellungen aus dem Video und passe sie mit deinem persönlichen Namen an, damit wir später im MultiplayerModus unsere Ameisen gegeneinander antreten lassen können.<br />
+
 
 +
Übernehme die Einstellungen aus dem Video und passe sie mit deinem persönlichen Namen an, damit die Ameisen später im Multiplayer-Modus gegeneinander antreten können.<br />
 
Welches Verhalten zeigen die Ameise am Ende des Videos bzw. in deiner eigenen Simulation?<br /><br />
 
Welches Verhalten zeigen die Ameise am Ende des Videos bzw. in deiner eigenen Simulation?<br /><br />
 
:{{#ev:youtube|uIir4Jpz6Bk|650}}
 
:{{#ev:youtube|uIir4Jpz6Bk|650}}
 +
 
}}
 
}}
 
{{Lösung versteckt| Die Ameisen bleiben vor ihrem Bau stehen.}}
 
{{Lösung versteckt| Die Ameisen bleiben vor ihrem Bau stehen.}}
  
 +
 +
== Regungslose Ameisen ==
 +
 +
Damit du den Quellcode editieren kannst, beendest du die Simulation durch das Schließen beider Simulationsfenster (<u>nicht</u> Microsoft Visual C# 2008 Express Edition).
  
 
Wir wollen uns jetzt näher mit der Klasse ''MeineAmeise'' beschäftigen. Sie enthält wichtige (noch leere) Methoden, mit denen wir das Verhalten der Ameisen wesentlich verändern wollen, um somit auf Futtersuche zu gehen und unsere Ameisen vor Feinden zu schützen.
 
Wir wollen uns jetzt näher mit der Klasse ''MeineAmeise'' beschäftigen. Sie enthält wichtige (noch leere) Methoden, mit denen wir das Verhalten der Ameisen wesentlich verändern wollen, um somit auf Futtersuche zu gehen und unsere Ameisen vor Feinden zu schützen.
Zeile 50: Zeile 59:
  
 
{{Aufgabe-Mathe|
 
{{Aufgabe-Mathe|
Programmiere die Ameisen mit dem vorgegeben Quellcode so um, dass wenn sie vor dem Bau stehen zunächst immer gerade aus gehen.<br />
+
 
'''Hilfe:''' {{versteckt|Ameisen warten vor ihrem Bau, wenn sie zum Leben erweckt sind. In der Befehlsliste von AntMe! ist die Methode <tt>GeheGeradeaus()</tt> erklärt, die du hier aufrufen kannst, damit sich die Ameisen bewegen.<br />}}
+
Programmiere die Ameisen mit dem vorgegeben Quellcode so um, dass sie, wenn sie vor dem Bau stehen, zunächst immer gerade aus gehen.<br />
 +
'''Hilfe:''' {{versteckt|Ameisen warten vor ihrem Bau, wenn sie zum Leben erwachen. In der Befehlsliste von AntMe! ist die Methode <tt>GeheGeradeaus()</tt> erklärt, die du hier aufrufen kannst, damit sich die Ameisen bewegen.<br />}}
 +
 
 
}}
 
}}
 
<div class="lueckentext-quiz">
 
<div class="lueckentext-quiz">
Zeile 63: Zeile 74:
 
</div>
 
</div>
  
'''Ergbnis:''' {{versteckt|
+
Ein Beispiel wie die Implementierung funktioniert:
:{{#ev:youtube|CUwf5E-eDBc|650}}
+
{{#ev:youtube|CUwf5E-eDBc|650}}
 +
<br /><br />
 +
{{Aufgabe-Mathe|
 +
 
 +
Löse das Schüttelrätsel! Hinter den leeren Feldern stehen die Buchstaben mit denen die Wörter gebildet werden.
 +
 
 
}}
 
}}
  
 
<div class="schuettel-quiz">
 
<div class="schuettel-quiz">
Die öffentliche '''Methode''' <tt>Wartet()</tt> wird aufgerufen, wenn die Ameise zum Leben erweckt und vor ihrem Bau steht. Durch den Methodenmodifikator '''public''' wird erkennbar, dass die Methode '''öffentlich''' und für jeden aufrufbar ist. <tt>override</tt> ist ein weiterer '''Modifikator''', der eine bereits, durch '''Vererbung''', vorhandene Methode überschreibt. Im Fall der Methode <tt>Wartet()</tt> soll nach der Bearbeitung aller Anweisungen kein '''Rückgabewert''' zurückkommen. Dies geschiet durch die Angabe '''void'''.<br />
+
Die öffentliche '''Methode''' <tt>Wartet()</tt> wird aufgerufen, weil die Ameise zum Leben erweckt und vor ihrem Bau steht. Danach wird <tt>Wartet()</tt> nur dann aufgerufen, wenn die Ameise keinen Arbeitsauftrag mehr hat. Durch den Methodenmodifikator '''public''' wird erkennbar, dass die Methode '''öffentlich''' und für jeden aufrufbar ist. <tt>override</tt> ist ein weiterer '''Modifikator''', der eine bereits durch '''Vererbung''' vorhandene Methode überschreibt. Im Fall der Methode <tt>Wartet()</tt> soll nach der Bearbeitung aller Anweisungen kein '''Rückgabewert''' zurückkommen. Dies geschieht durch die Angabe '''void'''.<br />
 
In den geschweiften Klammern folgt der '''Rumpf''' der Methode. Er enthält alle '''Anweisungen''', welche beim Aufruf ausgeführt werden. Jede Anweisung wird mit einem '''Semikolon''' abgeschlossen.
 
In den geschweiften Klammern folgt der '''Rumpf''' der Methode. Er enthält alle '''Anweisungen''', welche beim Aufruf ausgeführt werden. Jede Anweisung wird mit einem '''Semikolon''' abgeschlossen.
 
</div>
 
</div>
  
 
[[Bild:Krüger_AntsKrabbeln.png|center]]
 
[[Bild:Krüger_AntsKrabbeln.png|center]]
 +
 +
 +
== Überladene Methode ==
  
 
{{Aufgabe-Mathe|
 
{{Aufgabe-Mathe|
Bis jetzt laufen unsere Ameisen ziellos auf dem Gelände herum und haben noch keine Aufgabe.<br />Was ist der Unterschied zwischen '''GeheGeradeaus()''' und '''GeheGeradeaus(int entfernung)'''?
+
 
 +
Bis jetzt laufen unsere Ameisen ziellos auf dem Gelände herum und haben noch keine Aufgabe.<br />
 +
Was ist der Unterschied zwischen '''GeheGeradeaus()''' und '''GeheGeradeaus(int entfernung)'''?<br />
 +
Ordne die Videoclips und die Beschreibung den passenden Quellcode zu und implementiere den Quellcode wo die Ameisen geradeaus laufen in deiner Simulation!
 +
 
 
}}
 
}}
 
<div class="zuordnungs-quiz">
 
<div class="zuordnungs-quiz">
Zeile 85: Zeile 108:
 
| <div align="left"><tt>public override void Wartet()<br />{<br />GeheGeradeaus(150);<br />DreheUmWinkel(180);<br />GeheGeradeaus(150);<br />}</tt></div> || Die Ameise entfernt sich von ihrem Bau, genau 150 Schritte, und läuft wieder zurück. || {{#ev:youtube|b4-Ltk61Cjo|200}}
 
| <div align="left"><tt>public override void Wartet()<br />{<br />GeheGeradeaus(150);<br />DreheUmWinkel(180);<br />GeheGeradeaus(150);<br />}</tt></div> || Die Ameise entfernt sich von ihrem Bau, genau 150 Schritte, und läuft wieder zurück. || {{#ev:youtube|b4-Ltk61Cjo|200}}
 
|-
 
|-
| <div align="left"><tt>public override void Wartet()<br />{<br />GeheGeradeaus(200);<br />DreheUmWinkel(60);<br />}</tt></div> || Die Ameise läuft im Dreieck zum Bau zurück. || {{#ev:youtube|U79ZIZOv1yA|200}}
+
| <div align="left"><tt>public override void Wartet()<br />{<br />GeheGeradeaus(200);<br />DreheUmWinkel(120);<br />}</tt></div> || Die Ameise läuft im Dreieck zum Bau zurück. || {{#ev:youtube|U79ZIZOv1yA|200}}
 
|}
 
|}
 
</div>
 
</div>
 +
<br />
 +
<br />
 +
[[Bild:Krüger_AntsMüde.png|center]]
 +
<br />
 +
<br />
 +
{{#ev:youtube|Fs5_nYp2i2k|650}}
  
{{Aufgabe-Mathe|
 
  
Keine Ameise, aber eine Schildkröte ist bereits im Lernpfad implementiert. Sie kann mit einem Stift zeichnen und sich genauso bewegen wie unsere Ameisen.
+
== Erschöpfte Ameisen ==
Das erste Fenster zeigt alle möglichen Methoden der Turtle, welche im zweiten Fenster initialisiert wird.
+
Zeichne mit der Turtle und den gegebenen Methoden das Haus vom Nikolaus!
+
}}
+
  
  public String forward (int n)  // läuft n Schritte vorwärts
+
{{Aufgabe-Mathe|
  public String backward (int n)  // läuft n Schritte rüchwärts
+
  public String right(int a)      // dreht sich a Grad nach rechts
+
  public String left (int a)      // dreht sich a Grad nach links
+
  public String penUp ()          // hebt den Stift hoch (kein Zeichnen mehr bei forward/backward)
+
  public String penDown ()        // setzt Stift wieder auf
+
+
  public void home()              // legt die Turtle auf den Startpunkt
+
  
<code id="4b756ff050370">
+
Programmiere die Methode <tt>WirdMüde</tt>!<br />
canvas.clear(); // Zeichenfläche löschen
+
Übernehme den Quellcode in dein eigenes ''AntMe!''-Projekt!
Turtle turtle = new Turtle(1);
+
turtle.home();
+
</code>
+
<eval id="4b756ff051311">
+
</eval>
+
<canvas></canvas>
+
  
 
{| class="wikitable"
 
|-
 
| {{#ev:youtube|Fs5_nYp2i2k|650}} || [[Bild:Krüger_AntsMüde.png|center]]
 
|}
 
 
 
{{Aufgabe-Mathe|
 
Programmiere die Methode <tt>WirdMüde</tt>?<br />
 
Übernehme den Quellcode in dein eigenes AntMe!-Projekt!
 
 
}}
 
}}
 
<div class="lueckentext-quiz">
 
<div class="lueckentext-quiz">
Zeile 134: Zeile 136:
 
  '''}'''
 
  '''}'''
 
</div>
 
</div>
 +
  
  
 
{{Aufgabe-Mathe|
 
{{Aufgabe-Mathe|
 +
 
Was hast du in diesem Lernpfad gelernt?<br />
 
Was hast du in diesem Lernpfad gelernt?<br />
Löse das Kreuzworträtsel!
+
Löse das Kreuzworträtsel, indem du auf die Zahlen klickst!
 +
 
 
}}
 
}}
 
<div class="kreuzwort-quiz">
 
<div class="kreuzwort-quiz">
Zeile 149: Zeile 154:
 
| public || Kennzeichnung einer öffentlichen Methode
 
| public || Kennzeichnung einer öffentlichen Methode
 
|-  
 
|-  
| Käfer || Feind der Ameisen
+
| Wanze || Feind der Ameisen
 
|-  
 
|-  
 
| GeheGeradeaus ||eine Methode die Ameisen laufen lässt
 
| GeheGeradeaus ||eine Methode die Ameisen laufen lässt
Zeile 171: Zeile 176:
 
</div>
 
</div>
  
Punkte werden mit gesammelter Nahrung oder dem Sieg im Kampf über einen Gegner, das kann eine gegnerische Ameise oder eine Wanze sein, erzielt. Wir möchten zunächst die Nahrung finden und zurück in unseren Bau schaffen.
+
== Zeichne mit Turtle ==
 +
 
 +
{{Aufgabe-Mathe|
 +
 
 +
Keine Ameise, aber eine Schildkröte ist bereits im Lernpfad implementiert. Sie kann mit einem Stift zeichnen und sich genauso bewegen wie unsere Ameisen.
 +
Das erste Fenster zeigt alle möglichen Methoden der Turtle, welche im zweiten Fenster initialisiert wird.
 +
Schreibe in das untere Fenster einen Quellcode, der mit deiner Turtle und den gegebenen Methoden das Haus vom Nikolaus zeichnet!<br />
 +
Tipp:{{versteckt|Benutze für das Dach ein gleichseitiges Dreieck.}}
 +
 
 +
}}
 +
 
 +
  public String forward (int n)  // läuft n Schritte vorwärts
 +
  public String backward (int n)  // läuft n Schritte rüchwärts
 +
  public String right(int a)      // dreht sich a Grad nach rechts
 +
  public String left (int a)      // dreht sich a Grad nach links
 +
  public String penUp ()          // hebt den Stift hoch
 +
  public String penDown ()        // setzt Stift wieder auf
 +
 +
  public void home()              // legt die Turtle auf den Startpunkt
 +
 
 +
<code id="4b756ff050370">
 +
canvas.clear(); // Zeichenfläche löschen
 +
Turtle turtle = new Turtle(1);
 +
turtle.home();
 +
</code>
 +
<eval id="4b756ff051311">
 +
</eval>
 +
<canvas w=600 h=400></canvas>
  
  
 
<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;">
 +
 
== Was kannst du jetzt ==
 
== Was kannst du jetzt ==
 
* Grundlagen im Umgang mit Visual Studio Express
 
* Grundlagen im Umgang mit Visual Studio Express
Zeile 187: Zeile 220:
  
 
[[../|<math>\Leftarrow</math> zurück zum Hauptmenü]]
 
[[../|<math>\Leftarrow</math> zurück zum Hauptmenü]]
 +
 +
 +
[[Kategorie:Lernpfad AntMe!]]

Aktuelle Version vom 1. Dezember 2011, 22:57 Uhr

Mathematik-digital Pfeil-3d.png
Lernpfad

Das große Krabbeln beginnt


Teil 1 der Lernpfadgruppe: Programmieren mit AntMe!

Pdf20.gif Kompetenzaufbau


Ziele des Lernpfads

  • das Programm Visual Studio 2008 Express kennenlernen
  • das Programm AntMe! kennenlernen
  • die eigenen Ameisen zum Krabbeln bringen
  • kurze Einführung in turtle, die eigene Wiki-Programmierung


Notwendige Installationen für AntMe!
(Die Programme können nur von einem Benutzer installierten werden, der auch alle nötigen Rechte, Schreiben und Ausführen, auf dem PC hat.)


Die Installation

  Aufgabe   Stift.gif


Sieh dir das folgende Video an und reproduziere es an deinem PC nach.
Hinweis: Für eine bessere Qualität gibt es YouTubeHD. Wechsel dafür im Menü auf 720p oder klicke einmal auf das Video. Dadurch öffnet sich ein neues Fenster wo der Vollbildmodus aktiviert ist.



Alles ist installiert. Das Spiel kann beginnen!


  Aufgabe   Stift.gif


Übernehme die Einstellungen aus dem Video und passe sie mit deinem persönlichen Namen an, damit die Ameisen später im Multiplayer-Modus gegeneinander antreten können.
Welches Verhalten zeigen die Ameise am Ende des Videos bzw. in deiner eigenen Simulation?


Die Ameisen bleiben vor ihrem Bau stehen.


Regungslose Ameisen

Damit du den Quellcode editieren kannst, beendest du die Simulation durch das Schließen beider Simulationsfenster (nicht Microsoft Visual C# 2008 Express Edition).

Wir wollen uns jetzt näher mit der Klasse MeineAmeise beschäftigen. Sie enthält wichtige (noch leere) Methoden, mit denen wir das Verhalten der Ameisen wesentlich verändern wollen, um somit auf Futtersuche zu gehen und unsere Ameisen vor Feinden zu schützen. Ameisen stehen von Beginn an vor ihrem Bau und warten auf eine Anweisung, diesen Teil müssen wir bereits selbst programmieren. Es gibt vorgefertigte Methoden, die wir für unsere Ameisen nutzen können. Eine davon heißt "GeheGeradeaus()". Wir wollen sie hier für uns benutzen.


  Aufgabe   Stift.gif


Programmiere die Ameisen mit dem vorgegeben Quellcode so um, dass sie, wenn sie vor dem Bau stehen, zunächst immer gerade aus gehen.
Hilfe:

Ameisen warten vor ihrem Bau, wenn sie zum Leben erwachen. In der Befehlsliste von AntMe! ist die Methode GeheGeradeaus() erklärt, die du hier aufrufen kannst, damit sich die Ameisen bewegen.


public override void Wartet()

{

  GeheGeradeaus();

}

Ein Beispiel wie die Implementierung funktioniert:



  Aufgabe   Stift.gif


Löse das Schüttelrätsel! Hinter den leeren Feldern stehen die Buchstaben mit denen die Wörter gebildet werden.


Die öffentliche Methode Wartet() wird aufgerufen, weil die Ameise zum Leben erweckt und vor ihrem Bau steht. Danach wird Wartet() nur dann aufgerufen, wenn die Ameise keinen Arbeitsauftrag mehr hat. Durch den Methodenmodifikator public wird erkennbar, dass die Methode öffentlich und für jeden aufrufbar ist. override ist ein weiterer Modifikator, der eine bereits durch Vererbung vorhandene Methode überschreibt. Im Fall der Methode Wartet() soll nach der Bearbeitung aller Anweisungen kein Rückgabewert zurückkommen. Dies geschieht durch die Angabe void.
In den geschweiften Klammern folgt der Rumpf der Methode. Er enthält alle Anweisungen, welche beim Aufruf ausgeführt werden. Jede Anweisung wird mit einem Semikolon abgeschlossen.

Krüger AntsKrabbeln.png


Überladene Methode

  Aufgabe   Stift.gif


Bis jetzt laufen unsere Ameisen ziellos auf dem Gelände herum und haben noch keine Aufgabe.
Was ist der Unterschied zwischen GeheGeradeaus() und GeheGeradeaus(int entfernung)?
Ordne die Videoclips und die Beschreibung den passenden Quellcode zu und implementiere den Quellcode wo die Ameisen geradeaus laufen in deiner Simulation!


public override void Wartet()
{
GeheGeradeaus();
}
Die Ameise geht endlos geradeaus.
public override void Wartet()
{
if (EntfernungZuBau < 100)
{
GeheGeradeaus(10);
}
else
{
BleibStehen();
}
}
Alle Ameisen stellen sich im Kreis um den Bau auf.
public override void Wartet()
{
GeheGeradeaus(150);
DreheUmWinkel(180);
GeheGeradeaus(150);
}
Die Ameise entfernt sich von ihrem Bau, genau 150 Schritte, und läuft wieder zurück.
public override void Wartet()
{
GeheGeradeaus(200);
DreheUmWinkel(120);
}
Die Ameise läuft im Dreieck zum Bau zurück.



Krüger AntsMüde.png




Erschöpfte Ameisen

  Aufgabe   Stift.gif


Programmiere die Methode WirdMüde!
Übernehme den Quellcode in dein eigenes AntMe!-Projekt!


public override void WirdMüde()

{

  GeheZuBau();

}


  Aufgabe   Stift.gif


Was hast du in diesem Lernpfad gelernt?
Löse das Kreuzworträtsel, indem du auf die Zahlen klickst!


VisualStudio Programmierumgebung von Microsoft
Apfel gesunde Nahrung der Ameisen
public Kennzeichnung einer öffentlichen Methode
Wanze Feind der Ameisen
GeheGeradeaus eine Methode die Ameisen laufen lässt
Methodenrumpf Inhalt der geschweiften Klammern einer Methode
Bau Startpunkt der Ameisen
Zucker süße Nahrung der Ameisen
Ameise Insekt deines Volkes
Microsoft großer Softwarehersteller und Partner von AntMe!
Klasse Zusammenfassung von gleichartigen Objekten
WirdMüde Methode wird aufgerufen, wenn Ameisen erschöpft sind
Programmiersprache C, C# und Java ist eine ...

Zeichne mit Turtle

  Aufgabe   Stift.gif


Keine Ameise, aber eine Schildkröte ist bereits im Lernpfad implementiert. Sie kann mit einem Stift zeichnen und sich genauso bewegen wie unsere Ameisen. Das erste Fenster zeigt alle möglichen Methoden der Turtle, welche im zweiten Fenster initialisiert wird. Schreibe in das untere Fenster einen Quellcode, der mit deiner Turtle und den gegebenen Methoden das Haus vom Nikolaus zeichnet!
Tipp:

Benutze für das Dach ein gleichseitiges Dreieck.


  public String forward (int n)   // läuft n Schritte vorwärts
  public String backward (int n)  // läuft n Schritte rüchwärts
  public String right(int a)      // dreht sich a Grad nach rechts
  public String left (int a)      // dreht sich a Grad nach links
  public String penUp ()          // hebt den Stift hoch
  public String penDown ()        // setzt Stift wieder auf

  public void home()              // legt die Turtle auf den Startpunkt

canvas.clear(); // Zeichenfläche löschen Turtle turtle = new Turtle(1); turtle.home(); <eval id="4b756ff051311"> </eval> <canvas w=600 h=400></canvas>


Was kannst du jetzt

  • Grundlagen im Umgang mit Visual Studio Express
  • eigenständig AntMe! herunterladen und installieren
  • Ameisen auf dem Gelände laufen lassen
  • mit turtle objektorientiert Programmieren und Bilder malen


Das Krabbeln geht weiter! \Rightarrow Zum nächsten Lernpfad: AntMe! - Auf der Nahrungssuche

\Leftarrow zurück zum Hauptmenü