Du kannst jetzt Bedingungen in If-Anweisungen und sogar boolesche Ausdrücke mit UND und ODER. Boolesche Variablen sind ganz primitive Zeitgenossen, da sie lediglich einen von zwei möglichen Werten speichern können: true oder false.
Wozu braucht man sowas? In Processing will man sich zum Beispiel einen Zustand merken. Wenn du zum Beispiel eine Animation hast, möchtest du dir merken, ob die Animation laufen soll (play) oder anhalten (pause).
Nehmen wir mal eine einfache Animation:
int x = 0;
void draw() {
background(255);
ellipse(x, 50, 20, 20);
x++;
// immer wieder von links reinkommen
if (x >= 100) {
x = 0;
}
}
Um einen einfachen play/pause Mechanismus zu implementieren, führen wir eine boolesche Variable play ein. Wenn diese true ist, soll die Animation laufen. Wenn sie false ist, nicht:
int x = 0;
boolean play = true;
void draw() {
background(255);
ellipse(x, 50, 20, 20);
// NEU: bewege dich nur, wenn play true ist
if (play) {
x++;
}
// immer wieder von links reinkommen
if (x >= 100) {
x = 0;
}
}
Es hat sich nicht viel geändert, aber du kannst die Variable play von Hand auf false setzen, dann bleibt der Ball links stehen. Beachte, dass du nicht play == true in die Bedingung schreiben musst (obwohl das auch funktionieren würde). Wenn play true ist, wird direkt true eingesetzt - das gleiche gilt für den Fall, dass play false ist.
Jetzt musst du nur noch "zur Laufzeit", also während das Programm läuft, die Variable play umsetzen. Das funtioniert, indem du die folgende Funktion hinzufügst:
void keyPressed() {
if (play) {
play = false;
} else {
play = true;
}
}
Du setzt also die Variable play in Abhängigkeit von ihrem aktuellen Zustand, nämlich auf ihr 'Gegenteil'. In der Logik nennt man das auch die Negation ihres Zustands. Das kann man ganz elegant formulieren als:
void keyPressed() {
play = !play; // setze play auf seine eigene Negation
}
Das Negationszeichen funktioniert also ähnlich wie das Minuszeichen in der Arithmetik. Natürlich sind beide Code-Varianten völlig legitim und in Ordnung.
Boolesche Variablen und boolesche Ausdrücke
In eine boolesche Variable kann ein beliebiger boolescher Ausdruck per Zuweisung hineingetan werden. Im folgenden Beispiel wird der Ball in der x-Zone 30-70 rot gefärbt:
int x = 0;
boolean inTheZone = false;
void draw() {
background(255);
// boolescher Ausdruck
inTheZone = x > 30 && x < 70;
if (inTheZone) {
fill(255, 0, 0); // rot
}
else {
fill(255); // weiß
}
ellipse(x, 50, 20, 20);
x++;
}
Auch hier zeigt sich der Vorteil der Varible erst, wenn die Information an anderer Stelle bzw. zu anderer Zeit verwendet wird. Willst du etwa per Tastendruck den Ball wieder auf x=0 setzten unter der Bedingung, dass der Ball in 'der Zone' ist, dann fügst du hinzu:
void keyPressed() {
if (inTheZone) {
x = 0;
}
}
Boolesche Variablen als Teil boolescher Ausdrücke
Boolesche Variablen können natürlich auch Bestandteil von booleschen Ausdrücken sein. Hier zwei Beispiele:
boolean foo = true;
boolean goo = false;
int x = 10;
boolean ausdruck1 = foo && goo;
boolean ausdruck2 = foo || x > 5;
println(ausdruck1);
println(ausdruck2);
Zusammenfassung
Boolesche Variablen können einen binären Zustand speichern, d.h. eine Variable enthält entweder den Wert true oder den Wert false. Eine boolesche Variable kann z.B. in einer If-Bedingung verwendet werden.
Ein Anwendungsbeispiel ist der Unterschied zwischen "Play" und "Pause" bei einer Animation. Dies kann in einer booleschen Variable play gespeichert werden. Hier würde true bedeuten "Objekt bewegt sich" und false "Objekt bewegt sich nicht".
Eine boolesche Variable kann mit dem Negationsoperator invertiert werden, z.B. die Variable play
play = !play;
Eine boolesche Variable ist selbst ein boolescher Ausdruck, kann also allein in einer If-Bedingung stehen:
if (play) {
x++;
}