Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
start:skript:tut4 [2018/11/12 17:10] luismeixner |
start:skript:tut4 [2018/11/12 17:33] (aktuell) luismeixner |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
=====Processing===== | =====Processing===== | ||
- | Processing ist eine Programmierumgebung, in der mit der Programmiersprache Processing sehr leicht graphische Ausgaben realisiert werden können. Die Programmiersprache Processing ähnelt sehr stark Java. Processing kann zum Beispiel genutzt werden um ein Interface mit Buttons zu erstellen, mit dem man dem Arduino Befehle übermitteln kann oder um Kamerabilder zu verarbeiten. | + | Processing ist eine Programmierumgebung, in der mit der Programmiersprache Processing sehr leicht graphische Ausgaben realisiert werden können. Die Programmiersprache Processing ähnelt sehr stark Java. Processing kann zum Beispiel genutzt werden um am Computer ein Interface zu erstellen, mit dem man dem Arduino Befehle übermitteln kann oder um Kamerabilder zu verarbeiten. |
====Basics==== | ====Basics==== | ||
<code java> | <code java> | ||
Zeile 17: | Zeile 17: | ||
</code> | </code> | ||
Die ''setup''-Funktion wird, wie bei Arduino, nur einmal am Anfang des Programms ausgeführt während die ''draw''-Funktion unendlich oft ausgeführt wird. | Die ''setup''-Funktion wird, wie bei Arduino, nur einmal am Anfang des Programms ausgeführt während die ''draw''-Funktion unendlich oft ausgeführt wird. | ||
- | Die ''size''-Funktion bestimmt die Größe des Grafikfensters in Pixeln, wird sie weg gelassen, hat das Fenster standardmäßig eine Größe von 100x100 Pixeln. Mit der ''background''-Funktion wird die Farbe des Hintergrunds bestimmt, wobei zum Beispiel 255 der RGB-Code für Weiß ist. Die Funktion ''point(x,y)'' zeichnet einen Punkt bei den Koordinaten x und y, Mit den Funktionen ''rect(x, y, Breite, Höhe)'' und ''Ellipse(x, y, Breite, Höhe)'' werden Rechtecke bzw. Ellipsen mit einer gewissen Breit und Höhe an den Koordinaten x und y gezeichnet. | + | Die ''size''-Funktion bestimmt die Größe des Grafikfensters in Pixeln, wird sie weg gelassen, hat das Fenster standardmäßig eine Größe von 100x100 Pixeln. Mit der ''background''-Funktion wird die Farbe des Hintergrunds bestimmt, wobei zum Beispiel 255 der RGB-Code für Weiß ist. Die Funktion ''point(x,y)'' zeichnet einen Punkt bei den Koordinaten x und y, Mit den Funktionen ''rect(x, y, Breite, Höhe)'' und ''Ellipse(x, y, Breite, Höhe)'' werden Rechtecke bzw. Ellipsen mit einer gewissen Breite und Höhe an den Koordinaten x und y gezeichnet. |
====Klassen==== | ====Klassen==== | ||
Zeile 24: | Zeile 24: | ||
===Falling Balls==== | ===Falling Balls==== | ||
In dem Spiel "falling Balls" fallen Bälle vom oberen Bildschirm Rand und man kann diese durch Anklicken "abschießen". Das Programm besteht aus der Klasse und dem Hauptprogramm. | In dem Spiel "falling Balls" fallen Bälle vom oberen Bildschirm Rand und man kann diese durch Anklicken "abschießen". Das Programm besteht aus der Klasse und dem Hauptprogramm. | ||
+ | Die Funktion ''mouseClicked'' ist Teil von Processing, also schon vordefiniert, und wird aufgerufen, nachdem die linke Maustaste gedrückt und wieder losgelassen wurde. Die beiden Variablen ''mouseX'' und ''mouseY'' sind ebenfalls vordefiniert und geben immer die Aktuelle x- bzw. y-Koordinate der Maus wieder. | ||
+ | |||
==Klasse Ball== | ==Klasse Ball== | ||
<code java> | <code java> | ||
class Ball { | class Ball { | ||
- | float SIZE = 30; // Durchmesser | + | float SIZE = 30; //Durchmesser |
- | float xMax; // Max. x-Koordinate fuer die Generierung mit random() | + | float xMax; //Max. x-Koordinate für die Generierung mit random() |
- | float speedMax; // Max. Geschwindigkeit fuer die Generierung mit random() | + | float speedMax; //Max. Geschwindigkeit für die Generierung mit random() |
- | float x; // aktuelle x-Koordinate | + | float x; //aktuelle x-Koordinate |
- | float y; // aktuelle y-Koordinate | + | float y; //aktuelle y-Koordinate |
- | float speed; // Geschwindigkeit | + | float speed; //Geschwindigkeit |
Ball(float xMax, int speedMax) { | Ball(float xMax, int speedMax) { | ||
this.xMax = xMax; | this.xMax = xMax; | ||
this.speedMax = speedMax; | this.speedMax = speedMax; | ||
- | x = random(xMax); // generiere die Position "zufaellig" | + | x = random(xMax); //generiere die Position "zufällig"(Zufallszahl von 0 bis xMax) |
y = 0; | y = 0; | ||
- | speed = random(speedMax); // generiere die Geschwindigkeit "zufaellig" | + | speed = random(speedMax); //generiere die Geschwindigkeit "zufällig" |
} | } | ||
- | // Zeichnet den Ball | + | //Zeichnet den Ball: |
void draw() { | void draw() { | ||
ellipse(x, y, SIZE, SIZE); | ellipse(x, y, SIZE, SIZE); | ||
Zeile 48: | Zeile 50: | ||
void fall() { | void fall() { | ||
- | y = y + speed; | + | y = y + speed; //y-Koordinate in jedem Durchlauf um die Konstante speed erhöhen -> konstante Bewegung |
if (y>=400) { | if (y>=400) { | ||
- | // falls die untere Seite erreicht wurde, "werfe" den Ball neu: | + | //falls die untere Seite erreicht wurde, "werfe" den Ball neu: |
restart(); | restart(); | ||
} | } | ||
} | } | ||
- | // "Wirft" den Ball wieder | + | //"Wirft" den Ball wieder: |
void restart() { | void restart() { | ||
- | // eine kleine Pause einbauen, bevor der Ball wieder auf der Zeichenflaeche erscheint: | + | y = -200; //eine kleine Pause einbauen, bevor der Ball wieder auf der Zeichenfläche erscheint |
- | y = -200; | + | x = random(xMax); //neue x-Koordinate zuweisen |
- | x = random(xMax); | + | speed = random(speedMax); //neue Geschwindigkeit zuweisen |
- | speed = random(speedMax); | + | |
} | } | ||
- | // Loescht den Ball und "wirft" ihn neu, falls am Ball geklickt wurde | + | //Löscht den Ball und "wirft" ihn neu, falls Ball angeklickt wurde |
void clicked() { | void clicked() { | ||
- | if (sqrt(sq(mouseX - x) + sq(mouseY - y)) < SIZE/2) { | + | if (sqrt(sq(mouseX - x) + sq(mouseY - y)) < SIZE/2) { //überprüfen ob Länge des Verbindungsvektors zwischen Mauszeiger und Kugelmittelpunkt kleiner als der Radius der Kugel ist(Vektorgeometrie) |
restart(); | restart(); | ||
} | } | ||
Zeile 73: | Zeile 74: | ||
==Hauptprogramm falling_balls== | ==Hauptprogramm falling_balls== | ||
<code java> | <code java> | ||
- | Ball ball1 = new Ball(600, 3);// erzeuge 5 "globale" Baelle mit random-Position und -geschwindigkeit | + | Ball ball1 = new Ball(600, 3);//erzeuge 5 "globale" Bälle mit random-Position und -geschwindigkeit |
Ball ball2 = new Ball(600, 3); | Ball ball2 = new Ball(600, 3); | ||
Ball ball3 = new Ball(600, 3); | Ball ball3 = new Ball(600, 3); | ||
Zeile 84: | Zeile 85: | ||
void draw() { | void draw() { | ||
- | clear(); | + | clear(); //Löschen des Grafikfensters bei jedem Durchgang um eine Bewegung der Bälle zu erzeugen |
- | ball1.draw(); | + | ball1.draw(); //Zeichnen des Balls |
ball2.draw(); | ball2.draw(); | ||
ball3.draw(); | ball3.draw(); | ||
Zeile 97: | Zeile 98: | ||
} | } | ||
- | // Wird beim Klicken aufgerufen: | + | //Wird beim Klicken aufgerufen: |
- | void mouseClicked() { | + | void mouseClicked() { //wird aufgerufen nachdem die linke Maustaste gedrückt und wieder losgelassen wurde |
- | ball1.clicked(); | + | ball1.clicked(); //Aufrufen der clicked-Funktion der Objekte |
ball2.clicked(); | ball2.clicked(); | ||
ball3.clicked(); | ball3.clicked(); | ||
Zeile 112: | Zeile 113: | ||
<code java> | <code java> | ||
class Quadrat { | class Quadrat { | ||
- | float size; // Größe | + | float size; //Größe |
- | float x; // aktuelle x-Koordinate | + | float x; //aktuelle x-Koordinate |
- | float y; // aktuelle y-Koordinate | + | float y; //aktuelle y-Koordinate |
Quadrat (float x, float y) { | Quadrat (float x, float y) { | ||
Zeile 134: | Zeile 135: | ||
} | } | ||
- | void draw() { | + | void draw() { //draw() ist zwar leer muss aber stehen bleiben, da das Programm sonst nach einmaligem Durchführen der Setup-Funktion nicht weiter laufen würde |
} | } | ||
- | void mouseClicked() { | + | void mouseClicked() { //wird aufgerufen nachdem die linke Maustaste gedrückt und wieder losgelassen wurde |
Quadrat quadrat = new Quadrat(mouseX, mouseY); //neues Objekt der Klasse Quadrat erstellen | Quadrat quadrat = new Quadrat(mouseX, mouseY); //neues Objekt der Klasse Quadrat erstellen | ||
quadrat.draw(); //auf die Funktion draw des Objektes zugreifen | quadrat.draw(); //auf die Funktion draw des Objektes zugreifen | ||
} | } | ||
</code> | </code> |