Das Startgerüst
Hier beginnt dein Spiel. Eine Figur läuft durch einen Raum, stößt an Steine und Kisten und sammelt Münzen. Starte das Programm mit ▶ und steuere die Figur mit den Pfeiltasten. Über den Knopf oben rechts in der Ausgabe spielst du im Vollbild.
Dein Code wird in diesem Browser gespeichert, nicht im Internet. Auf einem anderen Rechner, in einem anderen Browser oder nach dem Löschen der Browserdaten siehst du wieder das Startgerüst. Übertrage deinen Stand deshalb regelmäßig in dein Projekt auf dem Rechner (siehe Auf deinem Rechner).
Wie es gemacht ist
| Klasse | Wofür |
|---|---|
Main |
der Startpunkt. Hier entsteht das Fenster, 768 × 432 Pixel groß. |
Welt |
die Bühne. Sie baut den Raum aus dem PLAN auf und zählt die Münzen. |
Spieler |
die Figur. Sie läuft, solange eine Pfeiltaste gedrückt ist, und geht zurück, wenn sie eine Wand berührt. |
Muenze |
dreht sich, bis sie eingesammelt wird. |
Kachel |
ein Feld des Raums. Jede Kachel schneidet ihr Bild aus einem größeren Kachelbild aus. |
Gras |
Boden, über den man laufen kann. |
Wand |
alles, wogegen der Spieler stößt. Stein und Kiste sind Wände. |
classDiagram
Sprite <|-- Kachel
Kachel <|-- Gras
Kachel <|-- Wand
Wand <|-- Stein
Wand <|-- Kiste
AnimatedSprite <|-- Spieler
AnimatedSprite <|-- Muenze
Stage <|-- Welt
Spieler --> Welt : welt
Der Raum ist ein Plan aus Zeichen
Der Raum steht in Welt als Feld von Zeichenketten. Jede Zeichenkette ist eine Zeile, jedes Zeichen eine Kachel:
| Zeichen | Kachel |
|---|---|
# |
Stein |
. |
Gras |
K |
Kiste |
M |
Münze auf Gras |
S |
Startplatz des Spielers |
Der Raum ist 16 Kacheln breit und 9 hoch. Eine Kachel ist im Bild 16 × 16 Pixel groß und wird dreifach vergrößert, auf der Bühne also 48 × 48 Pixel.
Grafiken aus einem großen Bild
Die Kacheln liegen nicht einzeln vor, sondern nebeneinander in einem großen Kachelbild. addCostume("kachel", pBild, pX, pY, 16, 16) schneidet ein Stück von 16 × 16 Pixeln aus, dessen linke obere Ecke bei (pX, pY) liegt. Die Figur macht es genauso: Im Bild sprite-sheet.png steht jede Blickrichtung in einer Spalte, die Schritte untereinander. addAnimation macht daraus eine Animation.
Leg los
Aufgabe 1: dein Raum
Ändere den PLAN. Baue Gänge, Nischen und Verstecke für die Münzen. Jede Zeile muss genau 16 Zeichen lang bleiben, und es muss genau neun Zeilen geben.
Aufgabe 2: deine Figur
Im Ordner assets/actor/character/ liegen über 90 Figuren, jede mit einer Datei sprite-sheet.png im selben Aufbau. Tausche den Jungen gegen eine andere Figur, zum Beispiel ninja-green, knight oder princess.
Tipp zu Aufgabe 2
Der Pfad steht in Spieler in der Konstanten BILD. Ersetze darin boy durch den Namen eines anderen Ordners.
Aufgabe 3: eine neue Kachel
Füge eine neue Wand hinzu, zum Beispiel einen Busch oder einen Brunnen. Schreibe dafür eine Klasse, die von Wand erbt, und gib ihr ein eigenes Zeichen im PLAN.
Die Kachelbilder liegen in assets/backgrounds/tilesets/. Öffne zum Beispiel tileset-nature.png und suche dir eine Kachel aus. Ihre linke obere Ecke liegt immer auf einem Vielfachen von 16.
Tipp zu Aufgabe 3
Die Klasse Kiste ist ein gutes Vorbild. Kopiere sie, gib der Kopie einen neuen Namen und ändere das Kachelbild und die Ecke. In Welt kommt dann ein weiterer Fall dazu:
} else if (zeichen == 'B') {
this.setze(new Busch(), s, z);
}
Aufgabe 4: ein anderer Klang
Die Klänge liegen in assets/audio/sounds/, nach Art sortiert. Gib dem Einsammeln einen anderen Klang. In assets/audio/musics/ liegen außerdem zehn Musikstücke für den Hintergrund.
Auf deinem Rechner
Das Projekt läuft auch ohne Browser, in jeder Java-Entwicklungsumgebung. Du brauchst ein JDK 25, zum Beispiel mit VS Code oder BlueJ.
Projekt: SpielwerkstattEntpacke das Archiv und starte es aus dem Projektordner heraus:
java --enable-native-access=ALL-UNNAMED -classpath "+libs/scratch-5.4.0-nrw-all.jar" Main.java
Im Archiv liegt alles, was das Projekt braucht:
| Was | Wofür |
|---|---|
| deine Klassen | derselbe Quelltext wie hier, mit einer import-Zeile am Anfang. Die Entwicklungsumgebung im Browser kennt die Klassen schon. |
assets/ |
Grafiken und Klänge |
+libs/scratch-5.4.0-nrw-all.jar |
Scratch for Java. In dieser Fassung liefern find, getAll und getTouchingSprites eine List der Abiturklassen. BlueJ findet die Bibliothek im Ordner +libs von selbst. |
List.java, Queue.java, Stack.java, BinaryTree.java, BinarySearchTree.java, ComparableContent.java, Graph.java, Vertex.java, Edge.java |
die Abiturklassen des Landes NRW, unverändert. Im Browser sind sie schon eingebaut. |
Wenn du auf dem Rechner weiterarbeitest, kopiere deine geänderten Klassen aus dem Browser in das Projekt. Die import-Zeile import org.openpatch.scratch.*; brauchst du dort in jeder Datei, die Klassen von Scratch for Java benutzt.