Einführung in Java mit Greenfoot

13

Transcript of Einführung in Java mit Greenfoot

Michael Kölling

Einführung in Java mit Greenfoot

Spielerische Programmierung mit Java

Higher Education

München • Harlow • Amsterdam • Madrid • Boston

San Francisco • Don Mills • Mexico City • Sydney

a part of Pearson plc worldwide

96

Kapitel 4 Das Spiel „Little Crab“ fertigstellen

Was uns noch bleibt, ist, die Würmer zu zählen und zu prüfen, ob wir acht erreichthaben. Dies muss jedes Mal erfolgen, wenn wir einen Wurm fressen. Deshalbsuchen wir nach unserer Methode lookForWorm, die den Code zum Fressen derWürmer enthält. Hier fügen wir eine Codezeile hinzu, die die Wurmzählung inkre-mentiert:

wormsEaten = wormsEaten + 1;

Wie immer bei einer Zuweisung wird zuerst die Seite rechts des Zuweisungssym-bols ausgewertet (wormsEaten + 1). Wir lesen also den aktuellen Wert vonwormsEaten und addieren dazu eine 1. Anschließend weisen wir diesen Wertwieder der Variablen wormsEaten zu. Als Folge wird die Variable um 1 inkremen-tiert.

Jetzt benötigen wir noch eine if-Anweisung, die prüft, ob wir schon acht Wür-mer gefressen haben, und in diesem Fall den Sound abspielt und die Ausführunganhält. Listing 4.6 enthält den vollständigen Code der Methode lookForWorms.Die hier verwendete Sounddatei (fanfare.wav) liegt bereits im sounds-Ordner dei-nes Szenarios, sodass sie einfach abgespielt werden kann.

Listing 4.6:Würmer zählen und

prüfen, ob wir gewon-nen haben.

Übung 4.25 Füge den zuvor besprochenen Code in dein Szenario ein, testeihn und stelle sicher, dass er funktioniert.

Übung 4.26 Als zusätzliche Kontrolle kannst du den Objektinspektor fürdein Krabben-Objekt öffnen (wähle dazu einfach INSPIZIEREN aus dem Kon-textmenü der Krabbe), bevor du mit dem Spielen anfängst. Lass den Inspek-tor geöffnet, während du spielst, und beobachte die Variable wormsEaten.

97

4.16 Weitere Ideen

4.16 Weitere IdeenDas Szenario little-crab-5 im Szenarien-Ordner des Buchkapitels ist eine Versiondes Projekts, das alle hier besprochenen Erweiterungen beinhaltet.

Wir werden uns jetzt von diesem Szenario verabschieden und einem anderenBeispiel zuwenden, auch wenn es noch viele naheliegende (oder weniger nahe-liegende) Möglichkeiten für Verbesserungen gibt. So könntest du zum Beispiel

verschiedene Bilder für den Hintergrund und die Akteure verwenden;

weitere Arten von Akteuren einführen;

dich nicht automatisch vorwärtsbewegen, sondern nur, wenn die Taste (½)gedrückt wird;

ein Spiel entwickeln, das von zwei Spielern gespielt wird, indem du eine zweitetastaturgesteuerte Klasse einführst, die auf andere Tasten reagiert;

festlegen, dass für jeden gefressenen Wurm (oder zu beliebigen Zeiten) neueWürmer auftauchen

und dir noch vieles mehr überlegen.

Übung 4.27 Das Bild der Krabbe ändert sich beim Laufen sehr schnell, was dieKrabbe ein wenig hyperaktiv wirken lässt. Vielleicht wäre es netter, wenn sichdas Bild der Krabbe nur bei jedem zweiten oder dritten act-Schritt ändernwürde. Versuche einmal, dies zu implementieren. Dazu könntest du einen Zäh-ler hinzufügen, der in der act-Methode inkrementiert wird. Jedes Mal, wenndieser Zähler 2 (oder 3) erreicht, ändert sich das Bild und der Zähler wird wie-der auf 0 zurückgesetzt.

Zusammenfassung der Programmiertechniken

In diesem Kapitel haben wir uns mit einer Reihe von wichtigen neuenProgrammierkonzepten vertraut gemacht. Wir haben gesehen, wie Konstruk-toren dazu genutzt werden können, um Objekte zu initialisieren – Konstruk-toren werden immer ausgeführt, wenn ein neues Objekt erzeugt wird.

Wir haben Instanzvariablen und lokale Variablen kennengelernt. Instanzvaria-blen (auch Zustandsfelder genannt) werden – zusammen mit Zuweisungs-anweisungen – verwendet, um Informationen in Objekten zu speichern, aufdie man später zugreifen kann. Lokale Variablen werden eingesetzt, um Infor-mationen für eine kurze Zeit zu speichern – innerhalb einer einzelnen Metho-denausführung –, sie werden verworfen, wenn die Methode endet.

Wir haben die Anweisung new verwendet, um neue Objekte im Quelltext zuerzeugen, und zum Schluss haben wir eine vollständige Version der if-Anweisung kennengelernt, die einen else-Teil umfasst, der ausgeführt wird,wenn die Bedingung nicht wahr ist.

Mithilfe all dieser Techniken können wir bereits eine ganze Menge Code schrei-ben.

98

Kapitel 4 Das Spiel „Little Crab“ fertigstellen

Zusammenfassung der Konzepte

Der Konstruktor einer Klasse ist eine besondere Art Methode, die immerautomatisch ausgeführt wird, wenn ein Objekt dieser Klasse erzeugt wird.

Java-Objekte können im Programmquelltext mithilfe des Schlüsselwortesnew erzeugt werden.

Variablen dienen zum Speichern von Informationen (Objekte oder Werte),die später benötigt werden.

Variablen können durch das Schreiben einer Variablendeklaration erzeugtwerden.

Wir können Werte in Variablen mithilfe einer Zuweisungsanweisung (=)speichern.

Variablen von primitiven Typen speichern Zahlen, boolesche Werte undZeichen; Variablen von Objekttypen speichern Objekte.

Objekte werden in Variablen gespeichert, indem eine Referenz auf dasObjekt gespeichert wird.

Greenfoot-Akteure verwalten ihr sichtbares Bild in Form eines Objektsvom Typ GreenfootImage.

Instanzvariablen (auch Zustandsfelder genannt) sind Variablen, die zueinem Objekt gehören (und nicht zu einer Methode).

Lebenszeit von Instanzvariablen: Instanzvariablen bestehen so lange,wie das Objekt existiert, zu dem sie gehören.

Lebenszeit von lokalen Variablen: Lokale Variablen bestehen nurwährend einer einzigen Methodenausführung.

Mithilfe des doppelten Gleichheitszeichens (==) können wir prüfen, ob zweiDinge gleich sind.

Die if/else-Anweisung führt ein Codefragment aus, wenn eine gege-bene Bedingung wahr ist, und ein anderes Codefragment, wenn dieBedingung falsch ist.

99

Vertiefende Aufgaben

Vertiefende AufgabenDieses Mal machen wir mehr Übungen mit Methodenaufrufen, einschließlicheiner neu geerbten Actor-Methode, und üben den Umgang mit sowie den Ein-satz von Variablen.

Noch einmal Krabben

Übung 4.28 Die Hummer sollen ein bisschen gefährlicher werden. Die Actor-Klasse besitzt eine Methode namens turnTowards. Verwende diese Methode,damit sich die Hummer ab und an der Mitte des Bildschirms zuwenden. Experi-mentiere sowohl mit der Häufigkeit dieser Richtungswechsel als auch mitunterschiedlichen Laufgeschwindigkeiten für die Hummer und die Krabbe.

Übung 4.29 Statte die Krabbe mit einem Zeitzähler aus. Dazu kannst dueine int-Variable hinzufügen, die jedes Mal, wenn sich die Krabbe bewegt,hochgezählt wird. (Tatsächlich zählst du dann die act-Schritte.) Sollte dieseine lokale Variable oder eine Instanzvariable sein? Warum?

Übung 4.30 Führe dein Spiel aus. Sobald du einen Sieg geschafft hast (alsoacht Würmer zu fressen), untersuche dein Krabben-Objekt und prüfe, wielange du gebraucht hast. Wie viele act-Schritte sind verbraucht?

Übung 4.31 Verschiebe deinen Zeitzähler aus der Crab-Klasse in die KlasseCrabWorld. (Es ist sinnvoller, dass die Welt anstatt eine einzelne Krabbe dieZeit verwaltet.) Die Variable ist einfach zu verschieben. Für das Verschieben derAnweisung, die die Zeit hochzählt, musst du eine act-Metode in der Crab-World-Klasse definieren. World-Unterklassen können ebenso wie Actor-Unterklassen act-Methoden besitzen. Um eine neue act-Methode in Crab-World zu erzeugen, kopiere einfach die Signatur der act-Methode der Krabbeund platziere hier deine Anweisung für den Zeitzähler.

Übung 4.32 Mache aus dem Zeitzähler deines Spiels einen Spielzähler. Dasheißt: Initialisiere die Zeitvariable aus irgendeinen Wert (z.B. 500) und zählebei jedem act-Schritt rückwärts (ziehe 1 vom Wert der Variable ab). Wennder Zähler 0 erreicht, dann beende das Spiel mit einem Sound für „Zeit istabgelaufen“. Experimentiere mit unterschiedlichen Werten für die Spielzeit.

Übung 4.33 Untersuche die Methode showText in der World-Klasse. Wieviele Parameter hat sie? Welche sind es? Was gibt sie zurück? Was macht sie?

Übung 4.34 Zeige den Spielzähler auf dem Bildschirm an, indem du die show-Text-Methode verwendest. Du kannst dies in der act-Methode von Crab-World machen. Dazu benötigst du eine Anweisung wie diese:

showText("Time left: "+ time, 100, 40);

wobei time der Name deiner Zählervariable ist. (Beachte: diese Anweisungverwendet den Plus-Operator und einen Text-String, dies werden wir in Kapi-

tel 5 behandeln.)

100

Kapitel 4 Das Spiel „Little Crab“ fertigstellen

Übungen mit springendem Ball

Übung 4.35 Erzeuge ein neues Szenario und in diesem eine Welt- und eineAkteur-Klasse mit Namen Ball. (Weise ihm ein Bild zu, das wie ein Ball aus-sieht.) Programmiere den Ball so, dass er sich mit konstanter Geschwindig-keit bewegt, und lasse ihn von den Rändern der Welt abprallen.

Übung 4.36 Programmiere deinen Ball so, dass er zählt, wie häufig er vomRand abgeprallt ist. Führe dein Szenario aus, wenn der Objekt-Inspektor desBalls zum Testen geöffnet ist.

Übung 4.37 Programmiere dein Szenario so, dass am Start automatisch dreiBälle vorhanden sind.

Übung 4.38 Verändere deinen Initialisierungscode, sodass die drei Bälle anzufälligen Orten erscheinen.

Übung 4.39 Verändere den Code für das Abprallen vom Rand, sodass dieBälle in zufälligen Winkeln vom Rand abprallen.

EXKURS

101

1 Szenarien teilen

In diesem Abschnitt wollen wir keine neuen Programmiertechniken einführen,sondern einen kleinen Abstecher machen und besprechen, wie du das, was duentwickelt hast, mit anderen teilen kannst. Die „anderen“ können dein Freundsein, der neben dir sitzt, oder ein anderer Greenfoot-Programmierer am anderenEnde der Welt.

E1.1 Dein Szenario teilen

Wenn du die Entwicklung eines Szenarios – sei es ein Spiel oder eine Simulation –abgeschlossen hast, möchtest du vielleicht auch andere daran teilhaben lassen.Diese Benutzer sollten das Spiel starten (und neu starten) können, sie benötigenjedoch keinen Zugriff auf das Klassendiagramm oder den Quelltext. Sie sollendas Spiel nicht ändern, sondern lediglich damit spielen.

Damit ein Programm nach dem Teilen wie gewünscht funktioniert, ist es wichtig,dass alle Akteure, die zu Beginn des Spiels auf dem Bildschirm angezeigt werdensollen, automatisch erzeugt werden. Benutzer haben keine Möglichkeit, Objekteinteraktiv zu erzeugen.

In Greenfoot musst du dazu das Szenario teilen. Hierfür steht dir der Button TEILEN

oben rechts im Hauptfenster von Greenfoot zur Verfügung. Damit rufst du ein Dia-logfeld auf, in dem du zwischen vier Optionen wählen kannst: VERÖFFENTLICHEN,WEB-SEITE, PROGRAMM und PROJEKT.

E1.2 Auf der Greenfoot-Webseite veröffentlichen

Die häufigste Art und Weise, dein Szenario zu teilen, ist, es auf der Greenfoot-Website zu veröffentlichen. Die Greenfoot-Website ist eine öffentliche Website (zuerreichen unter der Adresse http://greenfoot.org/home), die es Greenfoot-Benut-zern erlaubt, ihre Greenfoot-Szenarien hochzuladen. Wenn du dein Szenario aufder Greenfoot-Website teilst, dann wird es für die ganze Welt öffentlich – jeder mitInternetzugang kann es sehen und ausführen.

102

Exkurs 1 Szenarien teilen

Das Dialogfeld TEILEN (Abbildung E1.1) zeigt oben die Adresse an. Klick den Linkruhig an und schau mal, was es bereits auf dieser Website gibt. Es ist sicher ambesten, wenn du erst einmal die Site besuchst.

Abbildung E1.1Auf der Greenfoot-

Webseite veröffent-lichen.

Auf der Greenfoot-Website kann jeder Szenarien anschauen und ausführen. Dochwenn du eine Bewertung abgeben, Kommentare hinterlassen oder deine Szena-rien hochladen möchtest, musst du ein Konto auf dieser Site einrichten. Das gehtjedoch schnell und ist ganz einfach.

Nachdem du dein Konto eingerichtet hast, kannst du ganz einfach über das Dia-logfeld in Abbildung E1.1 dein Szenario hochladen. Über das Dialogfeld kannstdu ein Symbol, eine Beschreibung und Tags hinzufügen, die dein Szenario identi-fizieren.

Wenn du deinen Quelltext zur Verfügung stellen möchtest (über das Kontroll-kästchen QUELLCODE VERÖFFENTLICHEN), wird dein kompletter Quelltext auf dieGreenfoot-Site kopiert, von wo jeder sie herunterladen und lesen kann, um viel-leicht daraus seine eigene Version deines Szenarios zu erstellen.

Du kannst deine veröffentlichten Szenarien später ändern und verbessern, indemdu sie einfach unter dem gleichen Titel erneut exportierst.

103

E1.3 In eine Webseite exportieren

Das Veröffentlichen deiner Szenarien auf der Greenfoot-Site ist eine gute Mög-lichkeit, um Feedback von anderen Benutzern zu erhalten: Vorschläge für Ergän-zungen und Kommentare, was möglich ist und was nicht. Die Greenfoot-Site istaußerdem ein guter Ausgangspunkt, um Ideen für weitere Funktionalität zu sam-meln und um zu lernen, wie etwas umgesetzt wird. Es gibt dort ein Diskus-sionszentrum, wo du Fragen stellen und beantworten oder Programmiertechni-ken besprechen kannst. Oder halte Ausschau nach Szenarien mit Quelltext, ladeden Quelltext herunter und schau, wie andere Programmierer ihre Klassen imple-mentiert haben.

E1.3 In eine Webseite exportierenDie zweite Exportoption erlaubt es dir, dein Szenario in deine eigene Webseiteaufzunehmen (Abbildung E1.2). Du kannst einen Speicherort und einen Namenfür deinen Export auswählen, dann legt Greenfoot einen Ordner mit dem von dirgewählten Namen an. In diesem Ordner erzeugt Greenfoot eine Webseite (imHTML-Format) und konvertiert dein Szenario in ein Applet, das in dieser Web-seite läuft. Ein Applet ist eine Version deines Java-Programms, das eingebettet ineiner Webseite in einem Webbrowser laufen kann.

Abbildung E1.2In eine Webseite exportieren.

Du kannst dein Szenario ausführen, indem du die erzeugte Webseite in einem Web-browser öffnest.

Diese Webseite kannst du zunächst nur auf deinem eigenen Computer aufrufen.Wenn du möchtest, dass dein Applet auch auf einer Webseite steht, die für anderesichtbar ist, brauchst du Zugang zu einem Webserver, um es zu veröffentlichen.

Die Option SZENARIO EINFRIEREN regelt, ob die Akteure in der Welt vor dem Startender Anwendung verschoben werden können und ob der ACT-Button und derGeschwindigkeitsregler angezeigt werden sollen. Bei einem Spiel wirst du in derRegel die Option SZENARIO EINFRIEREN aktivieren, während du für Simulationenoder eher experimentelle Szenarien diese Markierung sicher lieber entfernst,damit die Benutzer mehr experimentieren können.

Ein Applet ist ein kleines Java-Pro-gramm, das auf einer Webseite in einem Webbrow-ser laufen kann.

Konzept

104

Exkurs 1 Szenarien teilen

E1.4 In ein Programm exportierenDie nächste Exportoption ist der Export in eine Anwendung. Eine Anwendung istein unabhängiges Programm, das der Benutzer lokal auf seinem Rechner ausfüh-ren kann.

Wähle hierfür in deinem TEILEN-Dialogfeld die Option PROGRAMM. Anschließendkannst du einen Speicherort und einen Namen für das ausführbare Szenarioangeben, das du damit erzeugst (Abbildung E1.3).

Auf diese Weise erzeugst du eine ausführbare Jar-Datei. Diese Datei trägt den Suf-fix .jar (kurz für Java Archive) und kann auf vielen verschiedenen Betriebssystemenausgeführt werden (sofern Java auf diesem Rechner installiert wurde). Zum Aus-führen reicht ein Doppelklick auf die Jar-Datei.

Abbildung E1.3Ein Szenario in ein Pro-

gramm exportieren.

E1.5 In ein Greenfoot-Archiv exportierenDie letzte Exportmöglichkeit ist ein Export an ein Greenfoot-Archiv, das aus einereinzelnen Datei besteht (Abbildung 1.4). Es erzeugt eine Datei mit der Endung.gfar (Greenfoot Archive). gfar-Dateien enthalten das gesamte Greenfoot-Szenario,einschließlich aller Dateien aus dem Szenario-Ordner. Wenn man darauf einenDoppelklick ausführt, dann klappt der normale Greenfoot-Szenario-Ordner auf,Greenfoot wird gestartet und öffnet das Szenario.

Abbildung E1.4Export in ein Green-

foot-Archiv.

Eine Jar-Datei ist eine Datei mit dem Suffix jar, die alle Java-Klassen enthält, die zu einer Java-Anwendung gehö-ren.

Konzept

Eine gfar-Datei ist eine einzelne Datei, die ein Greenfoot-Szenario enthält. Es kann mit Greenfoot geöffnet werden.

Konzept

105

E1.5 In ein Greenfoot-Archiv exportieren

gfar-Dateien machen es leichter, Greenfoot-Szenarien auf andere Computer zuübertragen. Man kann sie zum Beispiel einfach an eine E-Mail anhängen.

Zusammenfassung der Konzepte

Ein Applet ist ein kleines Java-Programm, das auf einer Webseite ineinem Webbrowser laufen kann.

Eine Jar-Datei ist eine Datei mit dem Suffix jar, die alle Java-Klassen ent-hält, die zu einer Java-Anwendung gehören.

Eine gfar-Datei ist eine einzelne Datei, die ein Greenfoot-Szenario ent-hält. Sie kann mit Greenfoot geöffnet werden.

Copyright

Daten, Texte, Design und Grafiken dieses eBooks, sowie die eventuell

angebotenen eBook-Zusatzdaten sind urheberrechtlich geschützt. Dieses eBook

stellen wir lediglich als persönliche Einzelplatz-Lizenz zur Verfügung!

Jede andere Verwendung dieses eBooks oder zugehöriger Materialien und

Informationen, einschließlich

der Reproduktion,

der Weitergabe,

des Weitervertriebs,

der Platzierung im Internet, in Intranets, in Extranets,

der Veränderung,

des Weiterverkaufs und

der Veröffentlichung

bedarf der schriftlichen Genehmigung des Verlags. Insbesondere ist die

Entfernung oder Änderung des vom Verlag vergebenen Passwortschutzes

ausdrücklich untersagt!

Bei Fragen zu diesem Thema wenden Sie sich bitte an: [email protected]

Zusatzdaten

Möglicherweise liegt dem gedruckten Buch eine CD-ROM mit Zusatzdaten bei.

Die Zurverfügungstellung dieser Daten auf unseren Websites ist eine freiwillige

Leistung des Verlags. Der Rechtsweg ist ausgeschlossen.

Hinweis

Dieses und viele weitere eBooks können Sie rund um die Uhr und legal auf

unserer Website herunterladen:

http://ebooks.pearson.de