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

Aus Informatik-Box
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 39: Zeile 39:
# Ergänze dann zweit neue Variablen <code>y</code> und <code>dy</code>, sowie zwei  Bedingte Anweisungen, die den Ball vom oberen und unteren Rand abprallen lassen. Teste das Programm mit verschiedenen Werten für <code>dx</code> und <code>dy</code>.
# Ergänze dann zweit neue Variablen <code>y</code> und <code>dy</code>, sowie zwei  Bedingte Anweisungen, die den Ball vom oberen und unteren Rand abprallen lassen. Teste das Programm mit verschiedenen Werten für <code>dx</code> und <code>dy</code>.
#: '''Tipp''': Du kannst mit {{Processing Ref|random()}} auch zufällige Werte für die Bewegung und Startposition generieren lassen. Dazu musst du den Befehl in der <code>void setup()</code> Methode ergänzen.
#: '''Tipp''': Du kannst mit {{Processing Ref|random()}} auch zufällige Werte für die Bewegung und Startposition generieren lassen. Dazu musst du den Befehl in der <code>void setup()</code> Methode ergänzen.
#: {{P5js|https://editor.p5js.org/Ngb/full/NyL_NnRQYn|height=100}}
{{Aufgabe:End}}
{{Aufgabe:End}}



Version vom 6. Dezember 2021, 23:23 Uhr

Kannst du dich noch an dieses Programm aus Schritt 9 erinnern?

Klicken, um das Programm zu starten.

Eigentlich wäre es schöner, wenn der Ball nicht einfach aus dem Bild fliegen würde. Vielleicht hast du dies schon mit Hilfe des Modulo-Operators verhindert, aber dann "teleportiert" der Ball einfach wieder nach links und fliegt erneut los.

Noch schöner wäre es, wenn der Ball vom Rand "abprallen" würde. Wir möchten also so etwas programmieren:

wenn Ball am Bildrand
dann
	ändere die Richtung

Ein solches Konstrukt ("wenn - dann") nennt man eine Bedingte Anweisung (oder auch Verzweigung).

In Java wird sie mit dem if-Befehl umgesetzt. (Daher sagen wir hier auch einfach if-Anweisung.)

Das Programm aus Schritt 9 könnten wir so modifizieren:

int x = 0;
int dx = 1;

void draw() {
  background(200);
  ellipse(x, 50, 20, 20);
  x = x + dx;
  if( x > width ) {
    dx *= -1;
  }
}

dx steht für "delta x". Das bedeutet "Änderung von x". Die Änderung ist zunächst 1. Sobald die Bedingung x > width wahr ist, wird der Code im Block der if-Anweisung ausgeführt. dx *= -1; multipliziert den Inhalt der Variablen dx mit -1 und speichert das Ergebnis direkt wieder in dx. Aus 1 wird also 1 * -1 = -1. Nun wandert der Ball nach links aus dem Fenster.

Icon Heft.png
Arbeitsauftrag
  1. Ergänze das Programm um eine Bedingte Anweisung, die den Ball auch vom linken Rand abprallen lässt.
  2. Ergänze dann zweit neue Variablen y und dy, sowie zwei Bedingte Anweisungen, die den Ball vom oberen und unteren Rand abprallen lassen. Teste das Programm mit verschiedenen Werten für dx und dy.
    Tipp: Du kannst mit random() auch zufällige Werte für die Bewegung und Startposition generieren lassen. Dazu musst du den Befehl in der void setup() Methode ergänzen.
    Klicken, um das Programm zu starten.


Bedingte Anweisungen ermöglichen in Kombination mit Variablen, die sich dynamisch verändern, komplexe Programme zu verfassen.

Klicken, um das Programm zu starten.