Struktur I
Zufall, Textausgabe, Variablen, if, else, else if, Wiederholung, Verschachtelte Wiederholung
Zufall
Zufallszahlen erzeugen mit random(). Liefert Zufallszahlen aus einem bestimmten Bereich (von...bis), die Grenzen können festgelegt werden. Z.B. eine Zufallszahl zwischen 0 und der Fensterbreite:
random(0,width);
Benutzen wie eine Zahl. Beim Zeichnen...
rect(random(10,width-10), random(10,height-10), 20, 20);
...beim Festlegen von Farben...
noStroke(); background(255); fill(random(0,200)); rect(random(10,width-10), random(10,height-10), 20, 20);
...oder in Variablen.
Wenn die Untergrenze 0 ist...
random(0,1000);
...kann sie weggelassen werden.
random(1000);↑
Debug: Textausgabe
Zufallszahlen (und eigentlich alle Zahlen) anschauen mit print/println (mit und ohne Zeilenende).
println(random(100)); println(" ist eine Zufallszahl."); print(random(100)); println(" ist eine Zufallszahl.");↑
Variablen
Deklarieren: es gibt etwas mit einem Namen und einem Typ, z.B. mit Komma (float) oder ohne (int).
int px; float py;
initialisieren (Wert zuweisen/speichern), ...
px = 30; py = 35.0;
benutzen.
point(px,py); ellipse(px+30,py+30,20,20);
Mit dem Ergebnis einer Funktion füllen, benutzen (z.B. in ellipse) und ausgeben (mit println).
float px; px = random(100); float py = random(100); println(px+" und "+py); ellipse(px,py,20,20);
Rechnen: plus +, minus -, mal *, geteilt /.
float px = width/2; float py = height/2; noStroke(); fill(0); rectMode(CENTER); rect(px,py,width-px*0.5,height-py*0.5);
Achtung: beim Rechnen mit float und int wird alles float.
int zahl = 10; println(zahl); float kommazahl = 10; println(kommazahl); println(zahl+kommazahl);
Beim Rechnen mit int wird abgerundet.
int zahl = 10; int zweiteZahl = 3; println(zahl/zweiteZahl);
Umwandeln mit float() oder int().
int zahl = 10; int zweiteZahl = 3; println(zahl/float(zweiteZahl)); println(int(zahl/float(zweiteZahl)));
Variablen müssen nicht zwangsläufig reine Zahlen sein. Beispiel: Farbe
color hintergrund = color(255,100,0); background(hintergrund); color vordergrund = color(random(255),random(255),random(255)); noStroke(); fill(vordergrund); rect(10,10,80,80);↑
Fallunterscheidungen - Entweder: if...
Fragen stellen
if (Ja/Nein-Frage)
Es folgt eine Sequenz mit Anweisungen. Damit kenntlich ist, dass die Sequenz zur Frage gehört, wird sie in {} eingeschlossen.
if (Ja/Nein-Frage) {
Anweisung1;
Anweisung2;
Anweisung3;
}
Zum Beispiel
float zahl = random(100);
if (zahl < 50) {
point(30,35);
line(10,70,80,30);
ellipse(60,65,20,20);
}
↑
...oder: else
Wenn die Frage mit ja beantwortet wird, führe den ersten Block aus, ansonsten den zweiten.
if (Ja/Nein-Frage) { Anweisung1; Anweisung2; Anweisung3; } else { AndereAnweisung1; AndereAnweisung2; AndereAnweisung3; }
Zum Beispiel
float zahl = random(100); if (zahl < 50) { ellipse(60,65,20,20); } else { rect(60,65,20,20); }↑
Mehrere Alternativen: if, else if, else
Wenn die Frage mit ja beantwortet wird, führe den ersten Block aus, ansonsten den zweiten, aber nur, wenn eine weitere Frage mit ja beantwortet wird. Usw.
if (Ja/Nein-Frage) { Anweisung1; Anweisung2; Anweisung3; } else if (neue Frage) { AndereAnweisung1; AndereAnweisung2; AndereAnweisung3; }Zum Beispiel
float zahl = random(100); if (zahl < 30) { ellipse(60,65,20,20); } else if (zahl < 60) { rect(60,65,20,20); } else { line(60,70,60,60); line(55,65,65,65); }↑
Schleifen: Wiederholung
Statt:
size(400, 200); background(255); line(5,5,5,195); line(15,5,15,195); line(25,5,25,195); line(35,5,35,195); line(45,5,45,195); line(55,5,55,195); // usw...
...eine Sequenz, die wiederholt wird:
for (Variable zum Zählen; Frage wann Ende; Art des Zählens) {
Anweisung1;
Anweisung2;
Anweisung3;
}
size(400, 200);
background(255);
for (int i=0; i < 400; i = i+10) {
line(5+i,5,5+i,195);
}
Wobei mit i gerechnet werden kann (5+i*10) und i = i + 1 meist abgekürzt wird: i++
for (int i=0; i < 10; i++) {
line(5+i*10,5,5+i*10,195);
}
Allerdings kann sich i auch in jedem Schritt beliebig anders verändern. Z.B. zufällig:
size(400, 200);
background(255);
for (int i=0; i < 400; i = i+int(random(40))) {
line(5+i,5,5+i,195);
}
↑
Verschachtelte Wiederholung
Schleifen können in Schleifen stehen. Z.B. um mehrere Zeilen mit jeweils mehreren Elementen zeichnen zu können.
Eine Zeile:
size(200,200);
background(255);
noStroke();
fill(0);
rectMode(CENTER);
for (int i=0; i<10; i++) {
rect(10+i*20,10,8,8);
}
Eine Spalte:
size(200,200);
background(255);
noStroke();
fill(0);
rectMode(CENTER);
for (int j=0; j<10; j++) {
rect(10,10+j*20,8,8);
}
Zeilen und Spalten...
size(200,200);
background(255);
noStroke();
fill(0);
rectMode(CENTER);
for (int i=0; i<10; i++) {
for (int j=0; j<10; j++) {
fill(i/10.0*255,0,j/10.0*255);
rect(10+i*20,10+j*20,8,8);
}
}
...mit zusätzlicher Variable.
size(200,200);
background(255);
noStroke();
fill(0);
rectMode(CENTER);
for (int i=0; i<10; i++) {
for (int j=0; j<10; j++) {
fill(i/10.0*255,0,j/10.0*255);
float groesse = random(1,9);
rect(10+i*20,10+j*20,groesse,groesse);
}
}
↑