AntMe! - Das große Krabbeln beginnt: Unterschied zwischen den Versionen
K (hat „Benutzer:Tobias Krüger/AntMe! - Das große Krabbeln“ nach „Benutzer:Tobias Krüger/AntMe! - Das große Krabbeln beginnt“ verschoben: schönere Formulierung) |
(Weitere Aufgaben) |
||
Zeile 4: | Zeile 4: | ||
''Teil 1 der Lernpfadgruppe: Programmieren mit AntMe!'' | ''Teil 1 der Lernpfadgruppe: Programmieren mit AntMe!'' | ||
− | *'''Zeitbedarf | + | *'''Zeitbedarf''': 1 Unterrichtsstunde |
− | *'''Material: PC, Internet, Laufzettel''' | + | *'''Material''': PC, Internet, Laufzettel |
− | *'''Behandelte Themen: Umgang mit Visual Studio Express und AntMe!, Kompilieren von AntMe! | + | *'''Voraussetzungen''': Grundlagen in objektorientierter Programmierung, Installation von Visual Studio Express und AntMe! |
+ | *'''Behandelte Themen''': Umgang mit Visual Studio Express und AntMe!, Kompilieren von AntMe! | ||
+ | *'''Ziele''': Festigung der objektorientierter Begriffe, eigenständiges Erarbeiten neuer Programmiermittel | ||
}} | }} | ||
+ | Exkurs: Wiederholung der Grundbegriffe | ||
{{Kasten blau|Notwendige Installationen für AntMe!<br /> | {{Kasten blau|Notwendige Installationen für AntMe!<br /> | ||
Zeile 41: | Zeile 44: | ||
'''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 anwenden kannst.}} | '''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 anwenden kannst.}} | ||
}} | }} | ||
+ | <div class="lueckentext-quiz"> | ||
+ | <strong>public override void Wartet</strong>() | ||
+ | <strong>{</strong> | ||
+ | <strong> GeheGeradeaus</strong>(); | ||
+ | <strong>}</strong> | ||
+ | </div> | ||
+ | |||
+ | Video einfügen | ||
+ | |||
+ | <div class="schuettel-quiz"> | ||
+ | Die öffentlich '''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 /> | ||
+ | In den geschweiften Klammern folgt der '''Methodenrumpf'''. Er enthält alle '''Anweisungen''', welche beim Aufruf ausgeführt werden. Jede Anweisung wird mit einem '''Semikolon''' abgeschlossen. | ||
+ | </div> | ||
+ | |||
+ | <!-- | ||
+ | <code id="1" hidden> | ||
+ | public Object Ameise(String name) { | ||
+ | String Name = name; | ||
+ | |||
+ | void setzeName(String neuerName) { | ||
+ | name = neuerName; | ||
+ | } | ||
+ | |||
+ | String toString(){ | ||
+ | return name; | ||
+ | } | ||
+ | |||
+ | return this; | ||
+ | } | ||
+ | |||
+ | int geradeaus = 1; | ||
+ | |||
+ | void GeheGeradeaus() { | ||
+ | geradeaus++; | ||
+ | } | ||
+ | |||
+ | int checkGeradeaus() { | ||
+ | return geradeaus; | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | <eval> | ||
+ | // Ein Objekt "Ameise" wird folgendermaßen erzeugt | ||
+ | //Object ant = Ameise("Fritz"); | ||
+ | |||
+ | // Die Ausgabe von Text erfolgt mit Console.System.writeLine(); | ||
+ | //System.out.println(ant.toString()); | ||
+ | //ant.setzeName("Max"); | ||
+ | //System.out.println(ant.toString()); | ||
+ | System.out.println(geradeaus); | ||
+ | wartet() { | ||
+ | GeheGeradeaus(); | ||
+ | } | ||
+ | |||
+ | wartet(); | ||
+ | geradeaus=3; | ||
+ | System.out.println(geradeaus); | ||
+ | </eval> | ||
+ | |||
+ | <check> | ||
+ | //Object ant1 = Ameise("Tobi"); | ||
+ | //ant1.setzeName("Kurt"); | ||
+ | //Object ant2 = Ameise("Fritz"); | ||
+ | |||
+ | int c1 = geradeaus; | ||
+ | wartet(); | ||
+ | int c2 = geradeaus; | ||
+ | wartet(); | ||
+ | wartet(); | ||
+ | wartet(); | ||
+ | wartet(); | ||
+ | wartet(); | ||
+ | wartet(); | ||
+ | wartet(); | ||
+ | wartet(); | ||
+ | int c3 = geradeaus; | ||
+ | |||
+ | //ant2.toString().equals("Fritz") && ant1.toString().equals("Kurt") && | ||
+ | System.out.println(""+geradeaus); | ||
+ | return (c1+1)==c2 && (c1+9)==c3; | ||
+ | </check> | ||
+ | --> | ||
{{Lösung versteckt| | {{Lösung versteckt| | ||
Die Implementierung sollte in etwa so aussehen: | Die Implementierung sollte in etwa so aussehen: |
Version vom 21. Januar 2010, 14:56 Uhr
Lernpfad
|
Exkurs: Wiederholung der Grundbegriffe
Notwendige Installationen für AntMe!
(Die Programme können nur von einem Benutzer installierten werden, der auch alle nötigen Rechte auf dem PC hat.)
Nach dem du dir die Datei "Einsteiger CS.zip" heruntergeladen hast, entpackst du sie in dein HOME-Verzeichnis. In dem Ordner "Einsteiger CS" startest du AntMe! mit einem Doppelklick auf "SpielerCS.csproj". Das Programm Microsoft Visual C# Express öffnet sich und mit einem Klick auf "Vorlage.cs" in der Projektmappe sollte bei dir so aussehen: In dem Spieler-Attribut gibst du deinem Volk einen eigenen Namen und trägst außerdem deinen Namen ein, ohne Angaben wird dein Volk später nicht gefunden. AntMe! kannst du nun mit einem Klick auf den Play-Button in der Menüleiste oder mit der Taste >F5< gestartet werden. Das Willkommensfenster öffnet sich (Updates können ja nach Bedarf bestätigt werden, in unserem Fall ist das erstmal nicht nötig). Um unsere Ameisenkolonie virtuell auch im Raum zu sehen, öffnest du im Menü Einstellungen >> Plugins... das Fenster für die AntMe! Plugins und setzt einen Haken vor 3D-Visualisierung. Damit du siehst, was dein Volk bis jetzt schon alles kann, wechselst du auf den Reiter "Simulation v1.6" und klickst dein Volk doppelt an. Der Play-Button färbt sich und du kannst die Simulation starten. Welche Beobachtung machst du? Hinweis:
Falls du Hilfe benötigst, weil dein Programm nicht startet, dann kannst du dir dieses Video ansehen.
|
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.
Programmiere die Ameisen so um, dass wenn sie vor dem Bau stehen zunächst immer gerade aus gehen.
Ameisen warten vor ihrem Bau, wenn sie zum Leben erweckt sind. In der Befehlsliste von AntMe! ist die Methode GeheGeradeaus() erklärt, die du hier anwenden kannst.
|
public override void Wartet() { GeheGeradeaus(); }
Video einfügen
Die öffentlich Methode Wartet() 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. 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 geschiet durch die Angabe void.
In den geschweiften Klammern folgt der Methodenrumpf. Er enthält alle Anweisungen, welche beim Aufruf ausgeführt werden. Jede Anweisung wird mit einem Semikolon abgeschlossen.
Die Implementierung sollte in etwa so aussehen:
public override void Wartet() { GeheGeradeaus(); }
Bis jetzt laufen unsere Ameisen ziellos auf dem Gelände herum und haben noch keine Aufgabe. 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 zu aller erst die Nahrung finden und zurück in unseren Bau schaffen.
Aufgabe - Nahrung finden
Sieh dir alle möglichen Methoden an, die bereits in AntMe! implementiert sind.