NextMindAnmelden
ProgrammierenSpielgerüstSpickzettel

Der erste Pixel

Koordinaten, Formen, Farben - und die ersten Bauteile deines Spiels.

Das kannst du danach

0 von 4 abgehakt
  • Du kannst das Koordinatensystem von Processing erklären und Punkte darin bestimmen.
  • Du kannst Rechtecke, Kreise und Linien gezielt platzieren.
  • Du kannst Formen füllen, umranden und Farben mit RGB angeben.
  • Du hast das Spielfeld für dein eigenes Spiel gezeichnet.

Melde dich an, um deinen Stand zu speichern.

Zuerst: Wähle dein Spiel

Dieser Kurs läuft auf ein Ziel zu. Am Ende hast du ein eigenes, funktionierendes Spiel geschrieben — und zwar jede Zeile davon selbst.

Entscheide dich jetzt, welches es wird — ein Klick genügt:

Dein Spiel

noch nicht gewählt

Melde dich an, um deine Wahl zu speichern.

Jedes Kapitel baut ein Bauteil genau dieses Spiels. Heute: das Spielfeld und die Figuren darauf. Deine Lehrkraft sieht deine Wahl, damit sie weiß, worauf sich deine Fragen beziehen.

Für das fertige Spiel gibt es später ein Spielgerüst zum Kopieren — mit Menü, Spielverlauf und Game Over sauber getrennt. Schau ruhig schon mal hinein; verstehen musst du es erst ab Kapitel 3.

Womit du arbeitest

Du schreibst deine Programme in der Processing-IDE. Die Abkürzung steht für Integrated Development Environment, auf Deutsch integrierte Entwicklungsumgebung. „Integriert" heißt: Mehrere Werkzeuge stecken in einem Programm.

  • ein Editor, in dem du den Text schreibst
  • ein Übersetzer, der aus deinem Text etwas macht, das der Computer ausführen kann
  • die Ausführung selbst — der Knopf mit dem Dreieck
  • eine Konsole, in der Fehlermeldungen und deine println()-Ausgaben landen

Ohne IDE müsstest du diese Schritte einzeln von Hand anstoßen. Genau deshalb gibt es sie.

Das Grundgerüst

Jedes Processing-Programm hat zwei Blöcke:

  • setup() läuft einmal am Anfang. Hier legst du die Größe der Zeichenfläche fest.
  • draw() läuft danach immer wieder, etwa 60-mal pro Sekunde. Alles, was sich bewegen soll, gehört hier hinein.
void setup() {
  size(400, 300);
}

void draw() {
  background(240);
  circle(200, 150, 80);
}

void heißt: Diese Funktion gibt nichts zurück. Das Semikolon am Ende jeder Anweisung ist Pflicht — das ist der häufigste Fehler am Anfang.

Das Koordinatensystem

Die Zeichenfläche ist ein Gitter aus Pixeln, und jeder Punkt darauf hat zwei Zahlen: x von links nach rechts, y von oben nach unten.

Erst überlegen

Auf einer Fläche der Größe 400 × 300 wird ein Punkt bei (100, 50) gezeichnet. Liegt er eher oben oder eher unten?

Das ist die häufigste Stolperstelle am Anfang. Hier ist das Gitter mit beschrifteter Skala — jede Linie ist 50 Pixel von der nächsten entfernt. Der grüne Punkt liegt bei (250, 200); such ihn erst auf der oberen und dann auf der linken Skala:

BeispielDas Gitter mit Skala

Jetzt du: im Wechsel ablesen und treffen. Das Raster ist dasselbe wie oben, 50 Pixel je Kästchen.

Es zählen immer nur die letzten sechs Runden — ein Fehlstart lässt sich also wegüben. Sobald vier davon sitzen, färbt sich die Übung selbst grün. Danach kannst du aufhören oder weitermachen, ganz wie du magst.

ÜbungPunkte finden

Wird vorbereitet …

width und height

Sobald size() gelaufen ist, kennt Processing zwei Werte, die du überall benutzen kannst:

  • width — die Breite deiner Fläche in Pixeln
  • height — die Höhe deiner Fläche in Pixeln

Nach size(400, 300) steht in width also die Zahl 400 und in height die Zahl 300. Du musst dir diese Zahlen nicht merken — du schreibst einfach width hin, und Processing setzt den passenden Wert ein.

Und weil das ganz normale Zahlen sind, kannst du damit rechnen. Nach size(400, 300) bedeutet:

  • width — die volle Breite, also 400. Das ist der rechte Rand.
  • width / 2 — die halbe Breite, also 200. Das ist die Mitte von links nach rechts.
  • height — die volle Höhe, also 300. Das ist der untere Rand.
  • height / 2 — die halbe Höhe, also 150. Das ist die Mitte von oben nach unten.

width / 2 heißt also schlicht „die halbe Breite" — und die halbe Breite ist die waagerechte Mitte. Zusammen treffen width / 2 und height / 2 genau den Mittelpunkt der Fläche.

Im folgenden Beispiel zeichnet das Programm seine eigenen Maße mit auf, damit du siehst, worüber wir reden. Ändere die Zahlen in size() und drück auf „Ausführen" — der Kreis bleibt in der Mitte, egal was du einstellst.

Probier verschiedene Größen ausProcessing

Tipp: Strg + Eingabe führt den Code aus.

Der Vorteil zeigt sich genau dann, wenn du size() änderst: Der Kreis bleibt mittig, ganz ohne dass du irgendeine Zahl nachrechnen musst. Schreibst du dagegen circle(180, 100, 60), sitzt er nach einer Vergrößerung plötzlich schief — probier auch das ruhig einmal aus.

Formen zeichnen

Klick auf einen Befehl, dann siehst du ein laufendes Beispiel dazu. Diese Liste ist zum Nachschlagen gedacht — du musst sie nicht auswendig lernen.

Formen

Zum Aufwärmen dieselbe Sorte Übung wie eben bei den Punkten — diesmal mit Formen. Zwei Dinge werden dabei gern verwechselt, und beide merkt man erst, wenn das Bild schief aussieht: Bei rect() ist (x, y) die Ecke, nicht die Mitte. Und bei circle() ist die dritte Zahl der Durchmesser, nicht der Radius.

ÜbungFormen ablesen

Wird vorbereitet …

AufgabenÜbungen: Formen setzen

Bevor es an die Farben geht: Diese Aufgaben drehen sich nur ums Platzieren. Wer Formen sicher setzt, tut sich mit allem Weiteren leichter.

Übung 1.1Level 1Der Kreis in der Mitte

Setz den blauen Kreis genau in die Mitte der Zeichenfläche.

Dein VersuchProcessing

Tipp: Strg + Eingabe führt den Code aus.

Übung 1.2Level 2Das Rechteck in die Mitte rechnen

Das rote Rechteck soll genau in der Mitte sitzen. Führ den Code erst einmal aus: Es sitzt daneben, obwohl da width / 2 steht.

Findest du den Grund? Rechne die richtige Position aus — rectMode() ist hier noch nicht erlaubt.

Dein VersuchProcessing

Tipp: Strg + Eingabe führt den Code aus.

Übung 1.3Level 3Dasselbe mit rectMode

Dieselbe Aufgabe, anderer Weg. Das rote Rechteck rechnet sich die Ecke aus — das blaue soll mit rectMode(CENTER) an dieselbe Stelle.

Sitzt es richtig, liegen beide exakt übereinander und du siehst nur noch eine Mischfarbe. Ein Rand irgendwo heißt: noch nicht deckungsgleich.

Überleg danach: Welcher Weg ist weniger fehleranfällig, wenn du die Größe des Rechtecks später änderst?

Dein VersuchProcessing

Tipp: Strg + Eingabe führt den Code aus.

Zu dieser Aufgabe gibt es bewusst keine Musterlösung. Es gibt mehrere richtige Wege — speichere deinen, dann kann er im Unterricht besprochen werden.

Übung 1.9Level 4Das Haus vom Nikolaus

„Das ist das Haus vom Ni-ko-laus" — acht Linien, ohne den Stift abzusetzen und ohne eine Linie zweimal zu ziehen.

Probier es erst auf Papier. Und überleg dann, warum es nur klappt, wenn du an einer der beiden unteren Ecken anfängst.

Dein VersuchProcessing

Tipp: Strg + Eingabe führt den Code aus.

Zu dieser Aufgabe gibt es bewusst keine Musterlösung. Es gibt mehrere richtige Wege — speichere deinen, dann kann er im Unterricht besprochen werden.

Farben

Farben gibt man als RGB an: drei Zahlen von 0 bis 255 für Rot, Grün und Blau. Ein einzelner Wert bedeutet Grau.

Farben und Linien

Wichtig ist die Reihenfolge: fill() und stroke() gelten ab dem Moment, in dem du sie aufrufst, für alles Nachfolgende — bis du sie wieder änderst.

BeispielFarbe wirkt nach vorne
void setup() {
size(400, 220);
noLoop();
}

void draw() {
background(245);
strokeWeight(2);

fill(70, 130, 220);   // ab hier ist alles blau
stroke(30, 60, 120);
circle(90, 110, 90);
rect(150, 65, 90, 90);

fill(230, 180, 60);   // ab hier gelb
noStroke();
circle(310, 110, 90);
}

AufgabenÜbungen: Formen und Farben

Übung 1.4Level 2Pac-Man

Aus einem Kreis wird ein Pac-Man, wenn ein Stück fehlt. Bau ihn mit arc() — und gib ihm ein Auge.

Dein VersuchProcessing

Tipp: Strg + Eingabe führt den Code aus.

Zu dieser Aufgabe gibt es bewusst keine Musterlösung. Es gibt mehrere richtige Wege — speichere deinen, dann kann er im Unterricht besprochen werden.

Übung 1.5Level 3Der Smiley

Mach aus dem gelben Kreis ein lachendes Gesicht. Der Mund soll ein Bogen sein, keine Linie.

Dein VersuchProcessing

Tipp: Strg + Eingabe führt den Code aus.

Zu dieser Aufgabe gibt es bewusst keine Musterlösung. Es gibt mehrere richtige Wege — speichere deinen, dann kann er im Unterricht besprochen werden.

Übung 1.6Level 3Die Zielscheibe

Zeichne eine Zielscheibe in die Mitte: mindestens vier Ringe, abwechselnd rot und weiß. Wenn du den Aim Trainer baust, kannst du sie später direkt weiterverwenden.

Dein VersuchProcessing

Tipp: Strg + Eingabe führt den Code aus.

Zu dieser Aufgabe gibt es bewusst keine Musterlösung. Es gibt mehrere richtige Wege — speichere deinen, dann kann er im Unterricht besprochen werden.

Übung 1.7Level 3Die Mondsichel

Aus dem Vollmond soll eine schmale Sichel werden — wie am Nachthimmel.

Das ist kniffliger, als es aussieht: Es gibt keinen Sichel-Befehl. Du musst dir mit dem behelfen, was du schon kennst.

Dein VersuchProcessing

Tipp: Strg + Eingabe führt den Code aus.

Zu dieser Aufgabe gibt es bewusst keine Musterlösung. Es gibt mehrere richtige Wege — speichere deinen, dann kann er im Unterricht besprochen werden.

Übung 1.8★ SternaufgabeDas Tortendiagramm

Zeichne ein Tortendiagramm mit drei Stücken: 50 % blau, 30 % grün, 20 % rot. Zusammen müssen sie den Kreis genau füllen — keine Lücke, keine Überlappung.

Das erste Stück ist schon da. Der Haken: arc() will nicht wissen, wie groß ein Stück ist, sondern wo es anfängt und wo es aufhört.

Dein VersuchProcessing

Tipp: Strg + Eingabe führt den Code aus.

Sternaufgabe. Die zählt nicht zum Fortschritt — du verlierst also nichts, wenn du sie auslässt. Schaffst du sie, gibt es dafür einen Stern.

Zu dieser Aufgabe gibt es bewusst keine Musterlösung. Es gibt mehrere richtige Wege — speichere deinen, dann kann er im Unterricht besprochen werden.

Kommentare

Nicht alles in deinem Quelltext ist für den Computer bestimmt. Mit zwei Schrägstrichen // schaltest du den Rest der Zeile ab — der Übersetzer überliest ihn einfach:

// Das hier ist eine Notiz für Menschen
circle(100, 80, 40);   // auch hinter Code möglich

Für mehrere Zeilen am Stück gibt es /* und */:

/*
  Alles zwischen diesen beiden Zeichenfolgen
  wird überlesen, egal wie viele Zeilen es sind.
*/

Kommentare sind aber nicht nur für Notizen da. Der Kniff, den du am häufigsten brauchen wirst, heißt auskommentieren: Du machst eine Zeile vorübergehend zum Kommentar, statt sie zu löschen. So findest du heraus, welche Zeile für welchen Teil des Bildes zuständig ist — und kannst sie danach mit zwei Tastendrücken zurückholen.

BeispielZwei Zeilen sind abgeschaltet
void setup() {
size(320, 180);
background(250);

fill(70, 130, 220);
circle(90, 90, 90);

// fill(230, 180, 60);
// circle(230, 90, 90);
}

Wie dein Code zum Programm wird

Der Computer versteht deinen Quelltext nicht. Er muss übersetzt werden — und dafür gibt es zwei grundsätzlich verschiedene Wege.

Ein Compiler übersetzt das ganze Programm auf einmal, bevor irgendetwas läuft. Am Ende steht ein fertiges Übersetzungsergebnis, das dann ausgeführt wird. Der Vorteil: Wenn du dich irgendwo vertippt hast, merkt der Compiler das schon beim Übersetzen — dein Programm startet dann gar nicht erst.

Ein Interpreter geht das Programm Zeile für Zeile durch und führt jede sofort aus. Es entsteht kein Zwischenprodukt. Der Vorteil: Es geht sofort los. Der Nachteil: Ein Fehler in Zeile 50 fällt erst auf, wenn das Programm dort ankommt — womöglich mitten im Betrieb.

Auf dieser Webseite passiert übrigens genau das: Dein Processing-Code wird zuerst nach JavaScript übersetzt — das ist die Sprache, die Browser sprechen — und der Browser führt dieses JavaScript dann aus. Für dich bleibt das unsichtbar, du schreibst und siehst überall Processing, genau wie in der IDE.

Jetzt du

Dein SpielDein Spielfeldin der Processing-IDE

Zeichne das Spielfeld deines Spiels — und zwar mit den richtigen Maßen, denn du wirst es in den nächsten Kapiteln weiterbenutzen.

Aim Trainer: eine Fläche mit einem Zielkreis darauf. Der Kreis soll aus mehreren Ringen in verschiedenen Farben bestehen.

Pong: die Fläche, die Mittellinie und die beiden Schläger als Rechtecke.

Breakout: die Fläche, der Schläger unten, der Ball und eine Reihe aus mindestens fünf Blöcken.

Wenn es aussieht wie ein Spielfeld, bist du fertig. Arbeite ruhig in der Processing-IDE — das Ergebnis brauchst du dort ohnehin weiter.

Sichere deinen Code zusätzlich selbst — auf einem Stick oder in deiner Cloud — und lade ihn am Ende auch in den Moodle-Kurs hoch.

Sitzt das?

1 / 5

Welcher Befehl legt in Processing die Zeichenfläche an?