Page 1 Christopher Schölzel Brückenkurs Programmierung WS 15
Transcrição
Page 1 Christopher Schölzel Brückenkurs Programmierung WS 15
Christopher Schölzel Brückenkurs Programmierung WS 15/16 Tag 1: Variablen und Verzweigungen Variablen If-Abfrage float a = 3.5; int b = 10; boolean c = true; String blabla = "Blabla"; if (<Bedingung>) { <Anweisungsblock1> } else { <Anweisungsblock2> } Logische Operatoren Arithmetische Operatoren > >= == && || ! != + - * / % Tag 2: Animationen und Schleifen Beispiel: For-Schleife Syntax: While-Schleife for (int i=0;i<end;i++) { ellipse(i*10,20,10,10); } while(<Bedingung>) { <Anweisungsblock> } setup und draw Mausposition void setup() { //einmal am Anfang } void draw() { //alle 15 ms } void draw() { ellipse(mouseX,20,10,10); } Cheat sheet 1/ 8 Christopher Schölzel Brückenkurs Programmierung WS 15/16 Tag 3: Events und Arrays keyPressed Arrays int counter = 0; void keyPressed() { if(key == ’a’) { counter++; } else if (key == ’x’) { exit(0); } } int[] numbers = new int[10]; numbers[0] = 20; numbers[3+2] = numbers[0]; int val = numbers[5]; mousePressed void mousePressed() { if(mouseButton == LEFT) { background(255); } else { background(0); } } Tag 4: Funktionen Funktionsdefinition Klasse mit Methode int add(int a, int b) { return a + b; } class Ball { float x,y; Ball(float x, float y) { this.x = x; this.y = y; } void display() { ellipse(x,y,50,50); } } Funktionsaufruf int x = add(10,3); Objekte und Methodenaufruf Ball b = new Ball(100,200); b.display(); Cheat sheet 2/ 8 Christopher Schölzel Brückenkurs Programmierung WS 15/16 Befehlsreferenz Befehl Beispiel Beschreibung Sketchsteuerung size(w, h) size(w, h, r) height width exit() loop() noLoop() frameRate frameRate(x) Initialisiert das Processingfenster mit der Breite w und der Höhe h. Muss immer als allererster Befehl ausgeführt werden. size(100, 100, P3D); Funktioniert wie size(w, h). Zusätzlich wird mit dem Renderer r bestimmt ob 2D (Wert P2D) oder 3D (Wert P3D) gezeichnet werden soll. Der 3D-Modus funktioniert auf den Laborrechnern der THM leider nicht. float cx = height / 2.0; Höhe des Processingfensters float cy = width / 2.0; Breite des Processingfensters if(error) { exit(); } Beendet das gesamte Programm. if(animation) { loop(); } Aktiviert das wiederholte Ausführen von draw(). Deaktiviert das wiederholte Ausführen if(anim) { loop(); } else { noLoop(); } von draw(). text("FPS: "+frameRate, 5, 20); Variable, die die aktuelle Anzeigegeschwindigkeit angibt. frameRate(20); Setzt die Anzeigegeschwindigkeit auf x frames per second. size(400, 300); Konsolenbefehle println(s) printArray(ar) println("YOLO"); int[] ar = new int[]{1, 2, 3}; printArray(ar); Gibt einen String s auf der Konsole aus. Gibt ein Array ar auf der Konsole aus. 2D-Zeichenelemente ellipse(x,y,w,h) ellipse(50,50,100,100); line(x1,y1,x2,y2) line(0,0,10,20); point(x, y) point(5, 10); quad(x1,y1,x2,y2, x3,y3,x4,y4) quad(0,0,0,90,40,90,40,0); rect(x,y,w,h) rect(0,0,90,40); triangle(x1,y1, x2,y2,x3,y3) triangle(20,0,0,20,20,20); Cheat sheet Zeichnet eine Ellipse mit Mittelpunkt (x, y), Breite w und Höhe h. Zeichnet eine Linie vom Punkt (x1, y1) zum Punkt (x2, y2) Färbt den Pixel am Punkt (x, y) ein. Zeichnet ein Viereck mit den Eckpunkten (x1, y1), (x2, y2), (x3, y3) und (x4, y4). Zeichnet ein Rechteck mit der linken oberen Ecke am Punkt (x, y), der Breite w und der Höhe h. Zeichnet ein Dreieck mit den Eckpunkten (x1, y1), (x2, y2) und (x3, y3). 3/ 8 Christopher Schölzel Brückenkurs Programmierung WS 15/16 Textbefehle text(s, x, y) loadFont(file) textFont(fnt) textSize(x) textWidth(s) text("Test", 100, 50); Schreibt den Text s an Position (x, y). PFont fnt = loadFont("xy.vlw"); Lädt eine Schriftart im VLW-Format, PFont fnt = loadFont("f.vlw"); textFont(fnt); textSize(10); float w = textWidth("bla"); die in der PDE über den Menüpunkt Tools → Create Font.. generiert wurde. Setzt die aktuell verwendete Schriftart auf fnt. Setzt die Schriftgröße auf x Pixel. Berechnet die Breite eines Textes s in Pixeln bei den aktuellen Einstellungen. 3D-Zeichenelemente box(w, h, d) box(10, 10 , 10); sphere(r) sphere(100); Zeichnet eine 3D-Box mit der Breite w, der Höhe h und der Tiefe d mit dem Mittelpunkt (0, 0). Zeichnet eine 3D-Kugel mit dem Radius r und dem Mittelpunkt (0,0). Zeicheneinstellungen color(gr) color(r, g, b) red(c) green(c) blue(c) background(x) background(r,g,b) fill(x) fill(r,g,b) noFill() stroke(x) stroke(r,g,b) noStroke() strokeWeight(x) Erzeugt einen Graustufen-Farbcode für (0 = ˆ Schwarz, 255 = ˆ Weiß). color cyan = color(0,255,255); Erzeugt einen RGB-Farbcode aus Rot-, Grün- und Blaukanalwerten (0–255). float r = red(color(100,50,0)); Berechnet den Rotanteil einer Farbe. float g = green(color(10,50,0)); Berechnet den Grünanteil einer Farbe. float b = blue(color(10,50,5)); Berechnet den Blauanteil einer Farbe. Färbt das ganze Bild mit einem Farbbackground(255); background(color(255,0,0)); code oder einem Grauwert (0–255) x. background(255, 0, 0); Färbt das ganze Bild mit einer Farbe aus RGB-Werten (0–255). Setzt die Füllfarbe auf einen Farbcode fill(255); fill(color(255,0,0)); oder einen Grauwert (0–255) x. fill(255, 0, 0); Setzt die Füllfarbe mit RGB-Werten. noFill(); Macht die Füllfarbe transparent. Setzt die Strichfarbe auf einen Farbcostroke(255); stroke(color(255,0,0)); de oder einen Grauwert (0–255) x. stroke(255, 0, 0); Setzt die Strichfarbe mit RGB-Werten. noStroke(); Macht die Strichfarbe transparent. strokeWeight(3); Setzt die Strichdicke auf x Pixel. color white = color(255); Mathematik (allgemein) abs(x) max(a, b) max(ar) min(a, b) Cheat sheet int positiv = abs(-3); int m = max(3, 4); int[] x = {1,5,6,3}; int m = max(x); int m = min(3, 4); Berechnet Berechnet Berechnet Array. Berechnet den Betrag von x. das Maximum von a und b. das größte Element in einem das Minimum von a und b. 4/ 8 Christopher Schölzel Brückenkurs Programmierung WS 15/16 max(ar) round(x) pow(a, b) sqrt(x) ceil(x) int[] int m int r float float int n x = {1,5,6,3}; = min(x); = round(3.5); v = pow(2.1, 2.5); x1 = 4 + sqrt(3); = ceil(3.1); floor(x) int n = floor(3.1); exp(x) log(x) dist(x1,y1,x2,y2) float x = exp(1.2); float a = log(3); float d = dist(0,1,2,1); Berechnet das kleinste Element in einem Array. Rundet x auf die nächste ganze Zahl. b Berechnet den Wert von a √. Berechnet den Wert von x. Rundet x auf die nächsthöhere ganze Zahl auf. Rundet x auf die nächstkleinere ganze Zahl ab. Berechnet den Wert von ex . Berechnet den Wert von ln(x). Berechnet die Distanz zwischen den Punkten (x1, y1) und (x2, y2). Mathematik (Trigonometrie) sin(x) cos(x) tan(x) degrees(r) radians(d) acos(x) asin(x) atan(x) atan2(y,x) float float float float float float float float float s = sin(PI); c = cos(HALF_PI); t = tan(PI); d = degrees(0.5 * PI); r = radians(45); alpha = acos(4/3.0); alpha = asin(4/3.0); alpha = atan(4/3.0); alpha = atan2(4, 3.0); PI HALF_PI QUARTER_PI TWO_PI float float float float alpha alpha alpha alpha = = = = PI / 3; HALF_PI; QUARTER_PI / 2; TWO_PI / 360; Berechnet sin(x) (mit x im Bogenmaß!). Berechnet cos(x) (mit x im Bogenmaß). Berechnet tan(x) (mit x im Bogenmaß). Wandelt r vom Bogenmaß in Grad um. Wandelt d von Grad ins Bogenmaß um. Berechnet arccos(x) im Bogenmaß. Berechnet arcsin(x) im Bogenmaß. Berechnet arctan(x)im Bogenmaß. Berechnet arctan xy im Bogenmaß mit korrektem Vorzeichen. Konstante mit dem Wert π Konstante mit dem Wert π2 Konstante mit dem Wert π4 Konstante mit dem Wert 2π Zufall random(high) float w6 = round(random(6))+1; random(low,high) float x = random(5,10); Erzeugt eine zufällige Fließkommazahl im Intervall [0, high) Erzeugt eine zufällige Fließkommazahl im Intervall [low, high) Transformationen (allgemein) pushMatrix() rotate(r) pushMatrix(); rotate(PI); rect(10,10,50,50); popMatrix(); rect(10,10,50,50); pushMatrix(); rotate(PI); rect(10,10,50,50); popMatrix(); rect(10,10,50,50); rotate(PI); scale(s) scale(2.0); popMatrix() Cheat sheet Speichert die aktuelle Transformationsmatrix oben auf dem Ablagestapel. Nimmt die oberste Transformationsmatrix vom Ablagestapel und wendet sie an. Fügt der aktuellen Transformationsmatrix eine Rotation (Bogenmaß) hinzu. Fügt der aktuellen Transformationsmatrix einen Skalierungsfaktor hinzu. 5/ 8 Christopher Schölzel Brückenkurs Programmierung WS 15/16 translate(x, y) translate(10, 50); Fügt der aktuellen Transformationsmatrix eine Verschiebung hinzu. Transformationen (3D) rotateX(r) rotateX(0.3 * PI); rotateY(r) rotateY(0.1 * PI); rotateZ(r) rotateZ(0.2 * PI); scale(sx, sy, sz) scale(1.0, 1.0, 2.0); translate(x, y, z) translate(0,100,0); Fügt der aktuellen Transformationsmatrix eine Rotation im Bogenmaß um die x-Achse hinzu. Fügt der aktuellen Transformationsmatrix eine Rotation im Bogenmaß um die y-Achse hinzu. Fügt der aktuellen Transformationsmatrix eine Rotation im Bogenmaß um die z-Achse hinzu. Fügt der aktuellen Transformationsmatrix Skalierungsfaktoren in x-, y- und zRichtung hinzu. Fügt der aktuellen Transformationsmatrix eine Verschiebung in x-, y- und zRichtung hinzu. Maussteuerung mouseButton Gibt innerhalb einer Mauseventfunktivoid mousePressed() { if(mouseButton == 1){exit();} on an, welcher Knopf gedrückt oder los} gelassen wurde. mouseClicked() Code innerhalb dieser Funktion wird ausgeführt, wenn eine Maustaste gedrückt und losgelassen wurde. Code innerhalb dieser Funktion wird float x = 0; void mouseDragged() ausgeführt, wenn die Maus bei ge{ x = mouseX; } drückter Maustaste bewegt wird. Code innerhalb dieser Funktion wird float y = 0; void mouseMoved() ausgeführt, wenn die Maus bewegt { y = mouseY; } wird. Gibt an, ob zum Beginn des aktuellen void draw() { if(mousePressed){fill(255);} Frames eine Maustaste gedrückt gehal} ten wurde. Code innerhalb dieser Funktion wird void mousePressed() { if(mouseButton == 1){exit();} ausgeführt, wenn eine Maustaste ge} drückt wird. Code innerhalb dieser Funktion wird void mouseReleased() { if(mouseButton == 1){exit();} ausgeführt, wenn eine Maustaste losge} lassen wird. float x = mouseX; Aktuelle x-Koordinate der Maus float y = mouseY; Aktuelle y-Koordinate der Maus float vx = mouseX - pmouseX; Vorherige y-Koordinate der Maus float vy = mouseY - pmouseY; Vorherige y-Koordinate der Maus mouseDragged() mouseMoved() mousePressed mousePressed() mouseReleased() mouseX mouseY pmouseX pmouseY Cheat sheet void mouseClicked() { exit(); } 6/ 8 Christopher Schölzel Brückenkurs Programmierung WS 15/16 Tastatursteuerung key keyCode keyPressed keyPressed() keyReleased() keyTped() Gibt innerhalb einer Tastatureventfunktion an, welche normale“ Zeichen” taste gedrückt wurde (’a’, ’ ’, ’;’, ...). Gibt innerhalb einer Tastatureventvoid keyPressed() { if(keyCode == ESC){exit();} funktion an, welche Steuertaste ge} drückt wurde (UP, DOWN, CONTROL, ...). Gibt an, ob zu Beginn des aktuellen void draw() { if(keyPressed) {fill(255);} Frames eine Tastaturtaste gedrückt ge} halten wurde. Code innerhalb dieser Funktion wird void keyPressed() { if(keyCode == ESC){exit();} } ausgeführt, wenn eine Tastaturtaste gedrückt wird. Code innerhalb dieser Funktion wird void keyReleased() { if(keyCode == ESC){exit();} } ausgeführt, wenn eine Tastaturtaste losgelassen wird. Code innerhalb dieser Funktion wird float x = 0; void keyTyped() ausgeführt, wenn eine normale“ Zei” { text(""+key, x, 20); } chentaste gedrückt wird. void keyPressed() { if(key == ’Q’){exit();} } Pixelmanipulationen pixels loadPixels() updatePixels() Array mit Farbcodes für jeden einloadPixels(); pixels[5*width+50] = color(10); zelnen Pixel. Der Farbcode für einen updatePixels(); Punkt (x,y) befindet sich dabei an Index y * width + x. Initialisiert pixels mit den Werten des loadPixels(); pixels[5*width+50] = color(10); aktuellen Bilds. updatePixels(); Überschreibt das aktuelle Bild mit den loadPixels(); pixels[5*width+50] = color(10); Werten von pixels. updatePixels(); Freiformzeichnen (Polygone) beginShape() vertex(x, y) vertex(x, y, z) Cheat sheet beginShape(); vertex(10,0); vertex(0,10); vertex(20,10); endShape(CLOSE); beginShape(); vertex(10,0); vertex(0,10); vertex(20,10); endShape(CLOSE); beginShape(); vertex(10,0,10); vertex(0,10,10); vertex(20,10,10); endShape(CLOSE); Beginnt eine Freiformfigur zu zeichnen. Die Zeichnung erfolgt mit der Methode vertex(x, y) und endet mit dem Aufruf von endShape(). Fügt den Punkt (x, y) zur aktuellen Freiformfigur hinzu. Funktioniert wie vertex(x, y) mit der dritten Dimension z. 7/ 8 Christopher Schölzel Brückenkurs Programmierung WS 15/16 endShape() endShape(CLOSE) Beendet das Zeichnen einer Freiformfigur. Die Figur wird als Linie gezeichnet. beginShape(); vertex(10,0); vertex(0,10); vertex(20,10); endShape(); beginShape(); vertex(10,0); vertex(0,10); vertex(20,10); endShape(CLOSE); Beendet das Zeichnen einer Freiformfigur. Die Figur wird als geschlossene Form gezeichnet. Sonstiges millis() int t = millis(); ArrayList<E> ArrayList<String> lst; lst = new ArrayList<String>(); String s = "Bla"; lst.add(s); lst.add("Blubb"); println(lst.size()); lst.remove(s); println(lst.get(0)); Cheat sheet Gibt die Millisekunden seit dem Start des Programms an. Die Klasse ArrayList<E> verhält sich wie ein dynamisch erweiterbares Array vom Typ E[]. Mit der Methode add(x) kann ein Element x hinzugefügt werden, mit der Methode remove(x) wird es gelöscht. Die Methode size() gibt die aktuelle Größe der Liste an und mit get(i) kann man auf das Element mit dem Index i zugreifen. 8/ 8