In diesem Kurs lernen Sie das Programmieren, also das Erstellen von Code, um Aufgaben durch einen Computer bearbeiten zu lassen. Sie lernen dies über den Umgang mit Computergrafik, mit Animation und interaktiven Beispielen. So können Sie technische Vorgänge sehr direkt visuell überprüfen. Das macht Spaß und beschleunigt den Lernprozess. Wir benutzen die Programmiersprache Processing, welche sich aus der populären Programmiersprache Java ableitet.
Zu Beginn jedes Kapitels finden Sie eine Liste von Lernzielen, die Ihnen zeigen, welches Wissen und welche Kompetenzen Sie lernen werden. Sie können die Lernziele nutzen, um nach Durcharbeiten eines Kapitels zu prüfen, ob Sie alles verstanden haben, oder auch, um sich auf eine Prüfung vorzubereiten.
Für dieses Kapitel benötigen Sie kein Vorwissen. Um Programmieren zu lernen müssen Sie nur am Ball bleiben und viel selbst programmieren.
Sie lernen motivierter, wenn Sie sich ein konkretes Ziel vornehmen. Was wollen Sie nach dem Durcharbeiten des Kapitels programmieren können? Hier zwei Vorschläge für das erste Kapitel.
Schaffen Sie es, die Zeichnungen mit Hilfe von Processing-Code anzufertigen?
(Sie finden die beiden Aufgaben auch unter 1.2 (c) und 1.2 (d).)
Zu Beginn lernen Sie erst einmal, wie man auf einem Computerbildschirm mit Hilfe von Anweisungen (Befehlen) zeichnet. Dann lernen wir die Processing-Umgebung als Werkzeug zum Programmieren kennen, um das Gelernte dann praktisch umzusetzen. Sie lernen, wie man Programme schreibt, startet und speichert. Damit sind Sie gut vorbereitet auf Ihrer Reise durch die Welt des Programmierens.
Wir beginnen mit der Frage, wie wir einen Computer dazu bringen, Formen auf den Bildschirm zu zeichnen. Im nächsten Abschnitt lernen Sie dann die Processing-Umgebung kennen, um das Gelernte direkt praktisch umzusetzen.
Computermonitore und Bildschirme im allgemeinen bestehen aus einem Gitter kleinster Punkte, aus denen sich das Bild zusammensetzt. Diese Punkte nennt man Pixel (für engl. picture element). Bilder werden erzeugt, indem die Pixel mit verschiedenen Farben belegt werden, im einfachsten Fall mit Schwarz und Weiß.
Um jeden einzelnen Pixel gezielt ansprechen zu können, verwendet man Koordinaten. Eine Koordinate gibt die x-Position an (links nach rechts), die andere gibt die y-Position an (oben nach unten). Das Koordinatensystem ist ähnlich zu dem, das Sie aus der Schule kennen, steht aber auf dem Kopf.
![]()
In der Abbildung oben hat der obere, linke Punkt die Koordinaten x=0 und y=1. Man schreibt auch kurz: (0, 1). Der untere, rechte Punkt hat die Koordinaten (3, 3).
Das Pixel-Koordinatensystem beginnt bei Null. Das heißt, wenn ein Fenster eine Auflösung von 800x600 hat, dann gibt es die x-Koordinaten 0, 1, ..., 799 und die y-Koordinaten 0, 1, ..., 599.
Beim Programmieren geht es darum, dem Computer Anweisungen in einer Weise zu geben, dass ein bestimmtes Problem gelöst wird.
Eine Anweisung ist eine präzise formulierte Nachricht an den Computer, die diesen anweist, eine Aufgabe durchzuführen. Man nennt dies auch Instruktion oder Befehl.
Jetzt können wir definieren, was ein Computerprogramm ist.
Ein Computerprogramm, oder kurz Programm, ist eine geordnete Liste von Anweisungen.
Dabei heißt "geordnet", dass die Reihenfolge der Anweisungen ausschlaggebend ist.
Ein Beispiel für eine Anweisung ist
Zeichne einen Punkt an der Stelle (10, 50) !
In Processing sieht das so aus:
point(10, 50);
Die Anweisung hat drei Teile:
Um eine Linie zu zeichnen, gibt man den Startpunkt (x1, y1) und den Endpunkt (x2, y2) der Linie an, also vier Parameter. Allgemein:
line(x1, y1, x2, y2);
Ein konkretes Beispiel:
line(20, 10, 100, 10);
Wenn Sie ein Dreieck zeichnen wollen, müssen Sie noch einen dritten Punkt (x3, y3) angeben. Allgemein:
triangle(x1, y1, x2, y2, x3, y3);
Beispiel:
triangle(0, 100, 80, 100, 40, 20);
Bei einem Rechteck geben Sie den linken, oberen Eckpunkt (x, y), die Breite und die Höhe an. Genau dieser Reihenfolge. Allgemein:
rect(x, y, breite, hoehe);
Beispiel:
rect(10, 10, 100, 50);
Sie möchten einen Kreis zeichnen? Kein Problem. Hier geben Sie den Mittelpunkt (x, y) an und den Durchmesser. Allgemein:
ellipse(x, y, durchmesser);
Beispiel:
circle(50, 50, 80);
Jetzt verallgemeinern wir den Kreis zu einer Ellipse. Hier geben Sie den Mittelpunkt (x, y) an, dann den Durchmesser in der Breite und den Durchmesser in der Höhe. Allgemein:
ellipse(x, y, durchmesserBreite, durchmesserHoehe);
Beispiel:
ellipse(50, 50, 80, 50);
Wir haben gesehen, dass bei einem Rechteck immer der linke obere Punkt angeben wird. Jetzt stellen Sie sich vor, Sie wollen folgendes Rechteck zeichnen:
Sie sehen, dass das Rechteck auf dem Mittelpunkt steht, aber Sie müssen die linke, obere Ecke "ausrechnen":
rect(30,30,40,40);
Einfacher wäre es, wenn Sie den Mittelpunkt
angeben könnten, denn man sieht sofort,
dass das (50, 50) ist. Processing erlaubt
dies mit der Anweisung rectMode(CENTER):
rectMode(CENTER);
rect(50,50,40,40);
Diese Anweisung stellt die Art und Weise um, wie rect() seine Parameter interpretiert.
Mit rectMode(CORNERS) bringen
Sie Processing dazu, die Parameter als
zwei Eckpunkte (links-oben,
rechts-unten) zu interpretieren.
Das wäre für ein Rechteck interessant, dass
unbedingt rechts unten am Mittelpunkt sein
soll:
Im Code geben Sie also die zwei Eckpunkte (20,20) und (50,50) an:
rectMode(CORNERS);
rect(20,20,50,50);
Sobald Sie den Modus mit
rectMode umschalten, gilt der neue
Modus so lange bis noch einmal rectMode aufgerufen wird.
Wenn Sie z.B. wieder den ursprünglichen Modus
herstellen wollen (linke-obere Ecke + Breite + Höhe),
geben Sie rectMode(CORNER) an:
rectMode(CORNERS); // Zwei-Ecken-Modus
rect(20, 20, 50, 50);
rectMode(CORNER); // "normaler" Modus
rect(50, 50, 10, 10);
Wenn Sie eine Ellipse zeichnen, dann ist das einem Rechteck sehr ähnlich. Man kann sich auch vorstellen, dass man ein Rechteck als Außenmaß für die Ellipse angibt.
Entsprechend gibt es auch drei Zeichenmodi für Ellipsen:
ellipseMode(CENTER)ellipseMode(CORNER)ellipseMode(CORNERS)Wenn Sie mehrere Formen zeichnen, verdecken die später gezeichneten alle früheren.
ellipse(40, 40, 35, 35);
rect(40, 40, 40, 30);
triangle(60, 60, 20, 90, 60, 90);
Sie können das nutzen, um komplexere Figuren durch Überlagerung zu erschaffen.
Beispiel:
rect(10, 10, 80, 60);
// Kreissegment ein Pixel runter, damit untere Linie verdeckt
arc(50, 71, 80, 80, radians(180), radians(360));
Computergrafik nimmt ein Raster aus Pixeln (picture elements) als Grundlage. Das Koordinatensystem hat den Ursprung (0, 0) in der linken, oberen Ecke. Pixelkoordinaten beginnen bei Null, so dass bei einer Breite von 800 Pixeln, jedes Pixel x-Werte von 0 bis 799 annehmen kann.
Ein Programm ist eine Liste von Anweisungen. Eine Anweisung besteht aus einem Namen und Parametern. Die Parameter stehen in Klammern und sind durch Komma getrennt. Am Ende der Anweisung steht ein Semicolon, um es von folgenden Anweisungen zu trennen.
Hier lernen Sie Ihr Arbeitswerkzeug kennen, also die Software, in der Sie Ihren Code schreiben, speichern und starten können: Processing. Damit können Sie direkt loslegen, die Beispiele aus dem ersten Abschnitt auszuprobieren. Bei Processing handelt es sich um eine integrierte Entwicklungsumgebung oder IDE.
Eine IDE (integrated development environment) ist ein Programm, das mehrere wichtige Funktionalitäten für die Entwicklung von Software in einer einzigen Umgebung mit einheitlichem Interface vereint.
Die drei wichtigsten Funktionalitäten sind:
Als erstes müssen Sie die Processing-IDE auf Ihrem Computer installieren. Dann können wir die Befehle aus den oberen Abschnitten ausprobieren.
Laden Sie zunächst das Installationspaket unter https://processing.org/download herunter. Entpacken Sie das ZIP-Paket verschieben Sie das resultierende Verzeichnis in Ihren Programm-Ordner.
Sie wissen bereits, dass ein Programm eine Reihe von Befehlen ist. Jetzt können Sie ein eigenes Programm schreiben und ausführen.
Wenn Sie Processing starten, sehen Sie ein Fenster. Schreiben Sie dort den Code hinein, den Sie unten im Screenshot sehen und drücken Sie auf den Start-Button.
Sie haben einen neuen Befehl gelernt! Der Befehl println gibt einen Text auf der sogenannten Konsole aus. Die Konsole ist der schwarze Bereich unten. Es gibt auch den Befehl print. Der Unterschied: println macht einen Zeilenumbruch nach der Ausgabe, d.h. der nächste Printbefehl fängt auf der nächsten Zeile an. Merken Sie sich "print line" für println vor. Sie verwenden print und println hauptsächlich zum testen Ihrer Programme und bei der Fehlersuche, aber auch, wenn Sie lediglich Textausgabe benötigen, also zum Beispiel wenn Sie Berechnungen anstellen und nur das Ergebnis sehen wollen.
print("Hallo, ");
println("Welt.");
Hallo, Welt.
Wenn Sie das Programm von oben starten, sehen Sie außerdem noch das folgende Fenster:
Dies ist das Grafik-Fenster. Hier werden alle Zeichenbefehle umgesetzt und hier werden wir später auch über Maus und Tastatur mit Processing interagieren.
Programmiersprachen sind ziemlich empfindlich, wenn es um die richtige Schreibweise geht. Wenn Processing etwas im Code nicht versteht, wird die entsprechende Zeile markiert und es erscheint eine Fehlermeldung:
Erwarten Sie sich nicht zuviel von der Fehlermeldung! Sie ist oft nicht sehr aussagekräftig und auch die markierte Zeile ist häufig nur ein Folgefehler des eigentichen Fehlers. Das heißt: Bei der Fehlersuche schauen Sie über den Code an der markierten Stelle und davor!
Ihr Code bildet ein Programm. In Processing wird das auch "sketch" (engl. für Skizze) genannt, um zu betonen, dass Sie in Processing schnell Prototypen zusammenprogrammieren können.
Wenn Sie Ihr Programm speichern, öffnet sich wie gewohnt ein Datei-Auswahlfenster. Dieses Fenster zeigt Ihnen immer das gleiche Verzeichnes, nämlich das sogenannte sketchbook.
Sinn des sketchbooks ist es, dass Sie Ihre Werke auch direkt über das File-Menü (Untermenü Sketchbook) laden können, ohne erst im Auswahlfenster zu suchen.
Sie können (und sollten) natürlich auch Unterverzeichnisse im Sketchbook-Verzeichnis anlegen. Wo sich Ihr Sketchbook befindet, sehen Sie über die "Einstellungen/Preferences". Dort können Sie auch das Sketchbook-Verzeichnis umstellen.
Ein Processing-Programm (Sketch) wird übrigens nicht nur in einer einzelnen Datei gespeichert, sondern es wird ein Verzeichnis angelegt. Das liegt daran, dass Sie später mehrere Dateien für Ihr Programm benötigen werden. Nennen Sie Ihr Programm "mumbai" und speichern es ab, so erstellt Processing ein Verzeichnis "mumbai" und darin eine Datei namens "mumbai.pde" (pde = processing development environment). Die .pde Datei enthält Ihren Code.
Sie können Kommentare in Ihren Code einfügen, um ihn leichter lesbar zu machen, sowohl für andere Programmierer als auch für sich selbst. Wie Sie sehen, benutzen Sie Kommentare aber auch oft, um Code zu "deaktivieren", ohne ihn zu löschen.
Es gibt zwei Arten von Kommentar: Einzeilige Kommentare und Block-Kommetare.
Alles, was nach einem
//
steht wird von Processing ignoriert.
So können Sie kurze Kommentare hinter eine Codezeile schreiben.
println("42"); // Sinn des Lebens?
Natürlich können Sie auch ganze Zeilen derart gestalten:
// Ein Hund kam in die Küche
// und stahl dem Koch ein Ei
println("wau");
Sie können auch einen ganzen Bereich als ignorierbar erklären.
Dazu kennzeichnen Sie den Beginn dieses Bereichs mit
/*
und das Ende mit
*/.
/* Ein Hund kam in die Küche
und stahl dem Koch ein Ei
da nahm der Koch nen Löffel
und schlug den Hund zu Brei */
println("argh");
Machen Sie reichlich Gebrauch von Kommentaren! Man kann auch eigenen Code dann wesentlich schneller verstehen, wenn man später etwas anpassen muss.
Kommentare werden nicht nur genutzt, um sachdienliche Hinweise auf die Funtionweise zu streuen, sondern auch, um mal eben schnell ein Stückchen Code rauszunehmen, wie im folgenden Beispiel in Zeile 3:
// Bin nicht sicher, was richtig ist...
// das hier?
//int a = a + 10;
// oder das hier?
int a = a + 1;
Wenn Sie die Codezeile(n) später wieder verwenden wollen, entfernen Sie einfach die Kommentarzeichen.
Da eine Programmiersprache viele Befehle hat, kann man unmöglich alle Befehle (rect, ellipse, size ...) und noch weniger alle ihre Parameter (x, y, Höhe, Breite ...) auswendig kennen.
Daher ist es wichtig, dass Sie sich darin üben, die jeweilige Dokumentation einer Programmiersprache zu lesen. In manchen Kontexten nennt man eine solche Dokumentation auch das Application Programming Interface (API)
In Processing kommen Sie über das Menü Help > Reference auf die Befehlsübersicht (engl. reference). Diese wird in Ihrem Browser (Firefox, Internet Explorer etc.) geöffnet. Aber: Die Seite befindet sich auf Ihrer Festplatte, d.h. Sie müssen nicht online sein, um die Referenz zu nutzen.
Die Referenz ist nach Kategorien geordnet und listet alle Befehle auf:
Wenn Sie einen bestimmten Befehl, z.B.
ellipse
nachschlagen wollen,
suchen Sie am besten mit STRG+F (Mac: CMD+F)
den Befehl und klicken auf den Link.
Jeder Befehl ist wie folgt dokumentiert. Wichtig ist die Auflistung und Beschreibung aller Parameter. Zusätzlich finden Sie ähnliche und verwandte Befehle (engl. related).
Zeichnen Sie eine horizontale Linie, die sich von links nach rechts über die Mitte des Grafikfensters erstreckt.
line(0, 50, 100, 50);
Zeichnen Sie einen Kreis in der Mitte des Grafikfensters, der bis zum Rand reicht.
ellipse(50, 50, 100, 100);
Zeichnen Sie die ersten Aufgaben zunächst per Hand auf Papier/Tablet, am besten mit einem Koordinatensystem und schreiben Sie dann die entsprechenden Anweisungen auf. Probieren Sie dann in Processing den Code aus.
Denken Sie auch bei zukünftigen Aufgaben daran, dass eine händische Zeichnung oft helfen kann, Probleme zu lösen.
Zeichnen Sie folgendes Haus, indem Sie Grundformen kombinieren.
Erstellen Sie die folgende Pyramide aus Quadraten. Versuchen Sie bei dieser Übung mit "System" zu arbeiten, d.h. beginnen Sie mit einem Quadrat und überlegen Sie, wie Sie jeweils x- und y-Koordinaten anpassen müssen, um die nächsten Quadrate zu zeichnen.
Zur weiteren Übung lernen wir, wie man einen Teil einer Ellipse zeichnet und wie man Polygone (Vielecke) herstellt.
Um nur einen Teil der Ellipse zu zeichnen, geben Sie zusätzlich den
Startwinkel alpha und den Endwinkel beta an. Die Winkel sind im Bogenmaß
anzugeben (360° entspricht 2*PI). Das PI enthält den Wert von Pi, so dass Sie damit rechnen können.
Allgemein sieht die Anweisung arc so aus:
arc(x, y, b, h, alpha, beta);
Die Winkel werden relativ zu einer gedachten Linie vom Mittelpunkt nach rechts gemessen. Das ist die Referenzlinie:
Zum Beispiel bei einem Startwinkel von 30°, gemessen im Uhrzeigersinn in Bezug auf die Referenzlinie.
Ein Endwinkel von 330° sieht dann so aus:
Sie müssen die Winkel im Bogenmaß angeben:
arc(50, 50, 80, 50, PI/6, 2*PI - PI/6);
Sie können die Funktion radians() verwenden, um in Grad zu denken und wirken. Hier das gleiche wie oben mit Grad:
arc(50, 50, 80, 50, radians(30), radians(330));
Sie können auch Formen definieren, indem Sie eine Reihe von Punkten definieren, die dann mit Linien verbunden werden. Das nennt man auch Polygon (Vieleck).
Schauen wir mal, wie das funktioniert:
beginShape();
vertex(50, 10);
vertex(80, 80);
vertex(5, 35);
endShape(CLOSE);
Jetzt erweitern wir das noch um zwei Ecken links oben:
beginShape();
vertex(50, 10);
vertex(80, 80);
vertex(5, 35);
vertex(10, 0); // neue Ecke
vertex(30, 30); // neue Ecke
endShape(CLOSE);
Sie müssen also Processing zunächst mit
beginShape
sagen, dass Sie ein Vieleck definieren möchten.
Dann definieren Sie die Eckepunkte mit
vertex
(engl. für Knotenpunkt).
Mit
endShape geben Sie das Signal zum Zeichnen. Deshalb steht dort in Klammern noch
eine weitere Angabe (nennt man auch Paramter, aber dazu später), nämlich, ob der letzte Punkt
mit dem ersten verbunden sein soll, dann geben Sie
CLOSE
an. Wenn Sie es
weglassen, wird die Form nicht geschlossen:
beginShape();
vertex(50, 10);
vertex(80, 80);
vertex(5, 35);
vertex(10, 0);
vertex(30, 30);
endShape(); // nicht schließen
Es gibt noch ein paar weitere Optionen. Schauen Sie sich unter Help > Reference
den Befehl
beginShape()
mal an.
Denken Sie auch hier daran, dass eine händische Zeichnung oft helfen kann, das Problem schneller zu lösen.
Zeichen Sie einen Halbkreis mit Hilfe von arc.
Zeichnen Sie ein Haus mit Hilfe von beginShape und endShape.
Zeichnen Sie folgende Figur mit Hilfe von beginShape und endShape.
Zeichnen Sie folgendes Gesicht aus Grundformen. Achten Sie darauf, welche Befehle vor oder nach welchen anderen ausgeführt werden müssen, damit alle Teile sichtbar sind.
Sie können Ihre Figuren variieren, indem Sie bestimmen, mit welchem Grauwert das Innere gefüllt werden soll. Grauwerte werden von 0 (schwarz) bis 255 (weiß) angegeben. Stellen Sie sich vor, Sie würden die "Lichtmenge" angeben (0 = keins, 255 = alles). Es gibt 256 Werte, weil das der Wertumfang ist, den ein Byte (8 Bit) speichern kann.
Der Befehl, um die Farbe festzulegen, mit der Figuren gefüllt werden, lautet fill.
Sobald Sie diesen Befehl verwenden, gilt er
für alle weiteren Zeichenbefehle bis zum nächsten fill.
Zum Beispiel alles schwarz füllen:
fill(0);
ellipse(40, 40, 35, 35);
rect(40, 40, 40, 30);
triangle(60, 60, 20, 90, 60, 90);
Oder drei Figuren jeweils unterschiedlich füllen:
fill(0);
ellipse(40, 40, 35, 35);
fill(100);
rect(40, 40, 40, 30);
fill(255);
triangle(60, 60, 20, 90, 60, 90);
Die Umrandung/Kontur einer Form kann man mit dem Befehl stroke
(engl. für Pinselstrich)
einfärben. Die Dicke der Umrandung kontrolliert man mit dem Befehl
strokeWeight (weight ist engl. für Gewicht).
Zum Beispiel weißer Rand, schwarze Füllung:
strokeWeight(4);
stroke(255);
fill(0);
ellipse(40, 40, 35, 35);
Mit dem Befehl noStroke schalten Sie das Zeichnen der Kontur
vollständig aus (solange bis wieder der Befehl stroke kommt).
noStroke();
ellipse(20, 20, 35, 35);
rect(60, 60, 35, 35);
Hier wird die Kontur beim zweiten Objekt wieder eingeschaltet:
noStroke();
ellipse(20, 20, 35, 35);
stroke(0); // schwarze Kontur
rect(60, 60, 35, 35);
Auf ähnliche Weise können Sie das Füllen von Figuren ausschalten.
Mit noFill werden Figuren nicht gefüllt, d.h. unter anderem,
dass darunterliegende Objekte sichtbar sind:
rect(20,20,60,60);
noFill();
ellipse(20, 20, 35, 35);
rect(60, 60, 35, 35);
Mit dem Befehl
size legt man die Größe (Breite und Höhe) des Zeichenfensters fest, das normalerweise 100x100 Pixel
groß ist. Beispiel, um ein 800x600-Pixel großes Fenster zu erhalten:
size(800, 600);
Die Hintergrundfarbe setzt man mit background. Hier z.B. auf schwarz...
background(0);
... oder weiß:
background(255);
Der Hintergrund ist auf ein Grau voreingestellt.
Wichtig: Der Befehl background
übermalt das gesamte Fenster mit der angegebenen Farbe.
Es ist also wichtig, dass background vor allem anderen Zeichencode
gesetzt wird.
Richtig:
background(50); // Bild wird mit Grau übermalt
rect(25,25,50,50);
Falsch:
rect(25,25,50,50);
background(50); // Bild wird mit Grau übermalt
Um bei stroke oder fill eine Farbe anzugeben,
gibt man nicht einen, sondern drei Werte an:
jeweils für Rot, Grün und Blau
(deshalb auch RGB-Farbe). Jeder Wert kann zwischen 0 und 255 (inklusive) liegen.
Wenn man einen der Werte auf 255 setzt und die anderen auf 0, bekommt man
also reines Rot oder Grün oder Blau:
strokeWeight(4);
background(255, 0, 0);
stroke(0, 255, 0);
fill(0, 0, 255);
rect(20, 20, 60, 60);
Als Merkhilfe denken Sie immer: R - G - B. Das heißt: Rot - Grün - Blau. Das ist genau die Reihenfolge der Zahlen bei allen Farbbefehlen.
Für eine rote Füllung, setzen Sie nur den ersten Wert aufs Maximum (= 255):
fill(255, 0, 0);
Für eine grüne Füllung:
fill(0, 255, 0);
Für eine blaue Füllung:
fill(0, 0, 255);
Auch der Befehl background() funktioniert mit drei RGB-Werten.
Überall dort, wo Sie einen Grauwert oder eine Farbe einsetzen, also bei fill oder stroke, können Sie die Linie/Fläche auch transparent schalten.
Transparent bedeutet, dass die darunter liegende Farbe durchscheint.
Transparenz steuern Sie, indem Sie die Deckkraft mit einem Wert zwischen 255 (voll deckend) bis 0 (voll transparent) einstellen. Man nennt diesen Wert auch den Alpha-Wert.
Bei den Befehlen fill oder stroke wird die Deckkraft einfach durch einen zweiten Wert
(neben der Graustufe) bzw. einen vierten Wert, wenn Sie Farbe verwenden, angegeben.
fill(0); // schwarz
ellipse(40, 40, 35, 35);
fill(100, 230); // grau, sehr deckend
rect(40, 40, 40, 30);
fill(255, 50); // weiß, sehr transparent
triangle(60, 60, 20, 90, 60, 90);
Beispiel mit Farben und Alpha-Wert:
fill(255, 0, 0); // rot
ellipse(40, 40, 35, 35);
fill(0, 255, 0, 230); // grün, sehr deckend
rect(40, 40, 40, 30);
fill(0, 0, 255, 50); // blau, sehr transparent
triangle(60, 60, 20, 90, 60, 90);
Sehen Sie sich die zwei Code-Teile an. In welchen Farben werden jeweils Ellipse, Rechteck und Dreieck gemalt?
fill(0);
ellipse(40, 40, 35, 35);
fill(255);
rect(40, 40, 40, 30);
triangle(60, 60, 20, 90, 60, 90);
fill(0);
ellipse(40, 40, 35, 35);
rect(40, 40, 40, 30);
fill(255);
triangle(60, 60, 20, 90, 60, 90);
Zeichnen Sie einen Kreis mit Durchmesser 80 in die Mitte des Grafikfensters, der rot gefüllt ist und eine weiße Kontur der Stärke 5 hat. Der Hintergrund soll schwarz sein.
background(0);
strokeWeight(5);
stroke(255);
fill(255, 0, 0);
ellipse(50, 50, 80, 80);
Zeichnen Sie zwei Rechtecke, die sich überschneiden, vor einem weißen Hintergrund. Das erste Rechteck hat keine Kontur und eine grüße Füllung. Das zweite Rechteck hat nur eine schwarze Kontur und keine Füllung.
background(255);
noStroke();
fill(0, 255, 0);
rect(20, 20, 40, 40);
stroke(0);
noFill();
rect(40, 40, 40, 40);
Zeichnen Sie folgende Figur.
Zeichnen Sie folgendes Gesicht.
Zeichnen Sie ein Gesicht mit Mund:
Versuchen Sie, folgenden Regenbogen zu malen. Arbeiten Sie ausschließlich mit fill und schalten Sie die Kontur mit noStroke aus.