In den vorangegangenen Beispielen haben wir Programme ohne Funktionen geschrieben. Diese Programme waren nicht interaktiv und beinhalten auch keine Animationen. Wie kann man also ein Programm so erweitern, dass zum Beispiel die Tastatur ausgelesen wird ? Die Antwort drauf sind sogenannte Programm-Events, also Ereignisse welche vom Programm erfasst und weitergeleitet werden. Hier eine kurze Liste von solchen Ereignissen:
- Programmstart
- Zeichenausgabe auf das Fenster
- Tastatureingabe
- Mauseingabe
Diese Ereignisse können abgefangen werden. Hierfür müssen wir nur Funktionen(mit von Processing definierten Namen) schreiben, die bei den jeweiligen Ereignissen automatisch aufgerufen werden.
- setup -> Programmstart
- draw -> Zeichenausgabe auf das Fenster
- keyPressed -> Tastatureingabe
- mousePressed -> Mauseingabe
Nehmen wir Beispiel 1 und erweitern dies mit den Ereignissen:
void setup() { size(300,300); smooth(); stroke(255,255,255); } void draw() { background(0); strokeWeight(1); line(100,10,100,150); line(150,10,150,200); line(200,10,200,250); fill(0,0,0); strokeWeight(5); ellipse(100,150,50,50); ellipse(150,200,50,50); noFill(); ellipse(200,250,50,50); }
In diesem Programm nutzen wir zwei Funktionen:
- void setup()
- void draw()
Diese Funktionen haben keine Parameter und auch keinen Rückgabewert, daher steht an der Stelle des Rückgabe Typs einfach nur ‘void‘. Die Funktionsnamen sind Namen die Processing kennt, daher ruft Processing diese Funktionen auf, sobald das entsprechende Ereignis eintrifft.
Weitere Funktiosnbeispiel
Diese Beispiel zeigt wie man Funktionen mit Rückgabewerte schreibt.
void setup() { println(addition(1,2)); println(addition(2,10)); } int addition(int parameter1, int parameter2) { return parameter1 + parameter2; }
Dies Beispiel zeigt wie man Funktionen nutzen kann um den Code leserlicher und einfacher Gestalten kann(Stichwort Modularisierung).
void setup() { size(300,300); smooth(); stroke(255,255,255); noFill(); } void draw() { background(0); bommel(100,10,140,50); bommel(150,10,190,50); bommel(200,10,240,50); } void bommel(int x,int y,int laenge,int umfang) { strokeWeight(1); line(x,y,x,y+laenge); strokeWeight(5); ellipse(x,y+laenge,umfang,umfang); }
Und hier unser erstes interaktive Programm:
void setup() { size(300,300); background(0); } void draw() {} void mousePressed() { println("x:" + mouseX + ", y:" + mouseY); }
Aufgabe
Erstelle ein Programm in welchem ein Kreis dem Mauszeiger folgt