Lernpfad:Einführung in Processing/11: Unterschied zwischen den Versionen

Zeile 198: Zeile 198:
{{Lösung:End}}
{{Lösung:End}}


== Wenn-Dann-Sonst-Wenn-Dann ==
Manchmal gibt es mehrere Bedingungen, die man nacheinander prüfen möchte, aber nur, wenn die ersten Bedingungen nicht zutreffen. Stell dir vor, du möchtest den Hintergrund schwarz, rot oder gold einfärben, je nachdem, ob sich der Mauszeiger im oberen, mittleren oder unteren Drittel befindet:
<syntaxhighlight lang="java" line="1">
void setup() {
  size(400, 400);
}
void draw() {
  if ( mouseY < 133 ) {
    background(0);
  } else {
    if( mouseY < 266 ) {
      background(255, 218, 83);
    } else {
    background(255, 38, 0);
    }
  }
}
</syntaxhighlight>
Du kannst beliebig viele ''Bedingte Anweisungen'' ineinander verschachteln. Allerdings leidet schnell die Übersichtlichkeit. Daher kannst du einen <code>else</code>-Befehl mit einer neuen <code>if</code>-Anweisung direkt verknüpfen zu einer <code>else if</code>-Anweisung:
<syntaxhighlight lang="java" line="1">
void setup() {
  size(400, 400);
}
void draw() {
  if ( mouseY < 133 ) {
    background(0);
  } else  if ( mouseY < 266 ) {
    background(255, 218, 83);
  } else {
    background(255, 38, 0);
  }
}
</syntaxhighlight>
Der Quelltext wird deutlich übersichtlicher, schon bei nur zwei ''Bedingten Anweisungen''.
{{Aufgabe:Start|Icon=Processing_2021_logo.svg}}
# Programmiere eine Textanzeige, die bei Mausklick zum nächsten Wort wechselt. Das erste Wort ist "Hallo". Nutze diese Vorlage:
#: <syntaxhighlight lang="java" line="1">
int zustand = 0;
void setup() {
  textAlign(CENTER);
  textSize(20);
}
void draw() {
  background(0);
  if (zustand == 0) {
    text("Hallo", width/2, height/2);
  }
}
</syntaxhighlight>
#: Ergänzen die Vorlage so, dass bei jedem Mausklick ein neues Wort angezeigt wird. Nach "Hallo" kommt "mein", "Name", "ist", "Hase", "Tschüs". Danach geht es wieder von vorn los. (Die Auswahl der Wörter kann frei variiert werden.) Nutze dafür <code>else if</code>-Anweisungen.
{{Aufgabe:End}}
{{Lösung:Start}}
<syntaxhighlight lang="java" line="1">
int zustand = 0;
void setup() {
  textAlign(CENTER);
  textSize(20);
}
void draw() {
  background(0);
  if (zustand == 0) {
    text("Hallo", width/2, height/2);
  }
  else if (zustand == 1) {
    text("mein", width/2, height/2);
  }
  else if (zustand == 2) {
    text("Name", width/2, height/2);
  }
  else if (zustand == 3) {
    text("ist", width/2, height/2);
  }
  else if (zustand == 4) {
    text("Hase", width/2, height/2);
  }
  else if (zustand == 5) {
    text("Tschüs", width/2, height/2);
  }
 
  zustand += 1;
  if( zustand == 6 ) {
    zustand = 0;
  }
}
</syntaxhighlight>
{{Lösung:End}}


{{Zusatzaufgabe:Start|Icon=Processing_2021_logo.svg}}
{{Zusatzaufgabe:Start|Icon=Processing_2021_logo.svg}}
8.581

Bearbeitungen