Projekt:2020/Processing

Aus HG Wiki
Zur Navigation springen Zur Suche springen

Seite zum Projekt "Processing" der Informatik EF im Schuljahr 2020/21.

Pair Programming ist eine verbreitete Praxis bei der Softwareentwicklung. Dabei arbeiten (in der Regel zwei) Programmierer zusammen. Während einer den Code schreibt, denken die anderen über die Problemstellung nachdenkt, Lösungsansätze sucht, Befehle nachschlägt und auf die Qualität des Codes achtet. Die Rollen sollen dabei immer wieder getauscht werden.

Die Programmiererin, die die Tastatur bedient nennt man Driver, die anderen Navigator.

Bearbeitet die Aufgaben mit der Pair Programming Methode. Der Driver teilt dazu seinen Bildschirm mit Processing. Die Navigatoren können derweil nach Hilfen suchen, Tipps und Lösungsvorschläge geben und auf Fehler hinweisen.

Sinnvolle Anlaufpunkte sind zum Beispiel:

Für die Aufgaben gibt es Versionen mit verschiedenen Schwierigkeitsniveaus. Sucht euch als Gruppe jeweils ein Niveau aus und versucht es zu lösen. Ist das Niveau zu schwer oder zu leicht, könnt ihr auch auf ein anderes Niveau wechseln. Ihr könnt die Aufgaben auch kreativ erweitern, wenn ihr gute Ideen habt.

Schachbrett

20210413082443 Schachbrett.png

Niveau 1

Icon Heft.png
Arbeitsauftrag

Stellt die Größe des Processing-Fensters auf 800x600 Pixel ein. Erstellt dann eine Klasse Schachbrettmuster, die das gesamte Fenster wie ein Schachbrett im Wechsel mit schwarzen und weißen Quadraten füllt.

Die Quadrate haben die Größe 40.


Tipps
  • Quadrate könnt ihr mit square zeichnen.
  • Mit Zählschleifen (for-Schleifen) könnt ihr die Zeilen und Spalten des Musters durchlaufen. (Ihr müsst zwei Schleifen ineinander verschachteln.
  • Eine einfache Prüfung, ob ein Feld schwarz oder weiß sein muss, kann durch if( (i+j)%2 == 0 ) vorgenommen werden. Dabei ist i die Zeilennummer und j die Spalte. % ist der "Modulo"-Operator.


Niveau 2

Icon Heft.png
Arbeitsauftrag

Erstellt eine Klasse Schachbrettmuster, die das gesamte Fenster wie ein Schachbrett im Wechsel mit schwarzen und weißen Rechtecken füllt. Dabei soll das Fenster exakt ausgefüllt werden und genau 15 Zeilen und 20 Spalten enthalten. Egal, auf welche Größe man das Processing-Fenster einstellt.


Tipps
  • Rechtecke könnt ihr mit rect zeichnen.
  • Mit Zählschleifen (for-Schleifen) könnt ihr die Zeilen und Spalten des Musters durchlaufen. (Ihr müsst zwei Schleifen ineinander verschachteln.
  • Eine einfache Prüfung, ob ein Feld schwarz oder weiß sein muss, kann durch if( (i+j)%2 == 0 ) vorgenommen werden. Dabei ist i die Zeilennummer und j die Spalte. % ist der "Modulo"-Operator.
  • Die Variable width enthält die Breite des Processing-Fensters. Die Variable height die Höhe.


Niveau 3

Icon Heft.png
Arbeitsauftrag

Stellt die Größe des Processing-Fensters auf 800x600 Pixel ein. Erstellt dann eine Klasse Schachbrettmuster, die in einer draw()-Methode das gesamte Fenster wie ein Schachbrett im Wechsel mit schwarzen und weißen Quadraten füllt. Dabei soll die Größe der Quadrate, sowie die Farbe für "schwarze" und "weiße" Felder als Parameter der Methode frei gewählt werden können.


Tipps
  • Mit Zählschleifen (for-Schleifen) könnt ihr die Zeilen und Spalten des Musters durchlaufen. (Ihr müsst zwei Schleifen ineinander verschachteln.
  • Eine einfache Prüfung, ob ein Feld schwarz oder weiß sein muss, kann durch if( (i+j)%2 == 0 ) vorgenommen werden. Dabei ist i die Zeilennummer und j die Spalte. % ist der "Modulo"-Operator.
  • lest bei der fill-Methode über Farben nach.


Niveau 4

Icon Heft.png
Arbeitsauftrag

Erstellt eine Klasse Schachbrettmuster, die in einer draw()-Methode das gesamte Fenster wie ein Schachbrett im Wechsel mit schwarzen und weißen Rechtecken füllt. Dabei soll die Farbe für "schwarze" und "weiße" Felder als Parameter der Methode frei gewählt werden können.

Die Rechtecke sollen das Fenster exakt ausfüllen und zunächst in genau 15 Zeilen und 20 Spalten aufgeteilt sein. Egal, auf welche Größe man das Processing-Fenster einstellt.

Animiert dann das Muster, indem ihr die Anzahl an Zeilen und Spalten jeweils um 1 erhöht, bis sie insgesamt um 10 erhöht wurden, dann verringert sie wieder bis sie 10 unter dem Startwert liegen (also bei 5 Zeilen, 10 Spalten). Dann wieder erhöhen, und so weiter.


Tipps
  • Mit Zählschleifen (for-Schleifen) könnt ihr die Zeilen und Spalten des Musters durchlaufen. (Ihr müsst zwei Schleifen ineinander verschachteln.
  • Eine einfache Prüfung, ob ein Feld schwarz oder weiß sein muss, kann durch if( (i+j)%2 == 0 ) vorgenommen werden. Dabei ist i die Zeilennummer und j die Spalte. % ist der "Modulo"-Operator.
  • Lest bei der fill-Methode über Farben nach.
  • Erstellt eine Objektvariable, die zu den Startwerten (15 und 20) hinzugerechnet wird und in einer update-Methode hoch bzw. runter gezählt wird.


Billard

20210413082703 Billard.png

Niveau 1

Icon Heft.png
Arbeitsauftrag

Erstellt eine Klasse Billardkugel, die eine Billardkugel an eine zufällige Position am oberen Rand des Fensters zeichnet und sie dann langsam in Richtung unteren Rand bewegt, bis sie aus dem Bild verschwunden ist (ggf. auch in einer zufälligen Richtung).


Tipps
  • Kreise könnt ihr mit circle zeichnen.
  • Mit Vektoren kann die Bewegung von Objekten leichter berechnet werden.
    • Erstellt einen Vektor z.B. mit PVector v1 = new PVector(4.0, 3.0);.
    • Addiert einen anderen Vektor auf den ersten mit v1.add(v2);.
    • Greift auf die Koordinaten des Vektors mit v1.x / v1.y zu.


Niveau 2

Icon Heft.png
Arbeitsauftrag

Erstellt eine Klasse Billardkugel, die eine Billardkugel an eine zufällige Position am oberen Rand des Fensters zeichnet und sie dann langsam in Richtung unteren Rand bewegt (ggf. auch in einer zufälligen Richtung).

Sobald die Kugel einen Rand berührt, soll sie in die entgegengesetzte Richtung abprallen und weiterlaufen.


Tipps
  • Kreise könnt ihr mit circle zeichnen.
  • Mit Vektoren kann die Bewegung von Objekten leichter berechnet werden.
    • Erstellt einen Vektor z.B. mit PVector v1 = new PVector(4.0, 3.0);.
    • Addiert einen anderen Vektor auf den ersten mit v1.add(v2);.
    • Greift auf die Koordinaten des Vektors mit v1.x / v1.y zu.
    • Ändert die Richtung des Vektors mit v1.mult(-1);.
  • Die Variable width enthält die Breite des Processing-Fensters. Die Variable height die Höhe.


Niveau 3

Icon Heft.png
Arbeitsauftrag

Erstellt eine Klasse Billardkugel, die eine Billardkugel an eine zufällige Position am oberen Rand des Fensters zeichnet und sie dann langsam in Richtung unteren Rand bewegt (ggf. auch in einer zufälligen Richtung).

Sobald die Kugel einen Rand berührt, soll sie in einem möglichst realistischen Winkel vom Rand abprallen.


Tipps
  • Mit Vektoren kann die Bewegung von Objekten leichter berechnet werden.
    • Erstellt einen Vektor z.B. mit PVector v1 = new PVector(4.0, 3.0);.
    • Addiert einen anderen Vektor auf den ersten mit v1.add(v2);.
    • Greift auf die Koordinaten des Vektors mit v1.x / v1.y zu.
    • Ändert die Richtung des Vektors mit v1.mult(-1);.
    • Dreht einen Vektor um einen Winkel mit v1.rotate(HALF_PI);. (Der Winkel wird als Vielfaches von Pi angegeben. Nutzt dazu die Variablen PI, HALF_PI und QUARTER_PI.)
  • Die Variable width enthält die Breite des Processing-Fensters. Die Variable height die Höhe.
  • Es gilt die Formel Ausfallswinkel = Einfallswinkel.


Niveau 4

Icon Heft.png
Arbeitsauftrag

Erstellt eine Klasse Billardtisch, die einen Billardtisch in das Fenster zeichnet.

Erstellt dann eine Klasse Billardkugel, die eine Billardkugel an eine zufällige Position auf den Tisch zeichnet und sie dann langsam in eine zufällige Richtung in Bewegung setzt.

Sobald die Kugel einen Rand de Tisches berührt, soll sie in einem möglichst realistischen Winkel von ihm abprallen.


Tipps
  • Mit Vektoren kann die Bewegung von Objekten leichter berechnet werden.
    • Erstellt einen Vektor z.B. mit PVector v1 = new PVector(4.0, 3.0);.
    • Addiert einen anderen Vektor auf den ersten mit v1.add(v2);.
    • Greift auf die Koordinaten des Vektors mit v1.x / v1.y zu.
    • Ändert die Richtung des Vektors mit v1.mult(-1);.
    • Dreht einen Vektor um einen Winkel mit v1.rotate(HALF_PI);. (Der Winkel wird als Vielfaches von Pi angegeben. Nutzt dazu die Variablen PI, HALF_PI und QUARTER_PI.)
  • Es gilt die Formel Ausfallswinkel = Einfallswinkel.


Hau den Lukas

20210419223540 HauDenLukas.gif

Niveau 1

Icon Heft.png
Arbeitsauftrag

Programmiert ein "Hau den Lukas" Spiel. Dabei sollen Kreise an zufälligen Positionen im Fenster erscheinen. Wenn der Kreis mit der Maus angeklickt wird, verschwindet er und ein neuer erscheint.

Nutze dafür die Processing-Methoden

und die Variablen


Tipps
  • Mit random(0, 100) generiert ihr eine Zufallszahl zwischen 0 und 100.
  • Die Methode void mouseClicked() wird ähnlich wie void draw() einfach in das Hauptprogramm geschrieben. Sie wird automatisch aufgerufen, wenn mit der Maus in das Fenster geklickt wird.

Ihr könnt diese Vorlage für das Programm nutzen:

// Globale Variable 
Lukas lukas; // Klasse Lukas muss erstellt werden

void setup() {
  // Fenster aufbauen und konfigurieren
}

void draw() {
  // Zeichne den "Lukas"
}

void mousePressed() {
  // Reagiere auf Mausklick
}


Niveau 2

Icon Heft.png
Arbeitsauftrag

Programmiert ein "Hau den Lukas" Spiel. Dabei sollen Kreise mit zufälliger Größe, in zufälligen Zeitabständen an zufälligen Positionen im Fenster erscheinen. Wenn der Kreis mit der Maus angeklickt wird, verschwindet er und ein neuer erscheint.

Nutze dafür die Processing-Methoden

und die Variablen


Tipps
  • Mit random(0, 100) generiert ihr eine Zufallszahl zwischen 0 und 100.
  • Die Methode void mouseClicked() wird ähnlich wie void draw() einfach in das Hauptprogramm geschrieben. Sie wird automatisch aufgerufen, wenn mit der Maus in das Fenster geklickt wird.

Ihr könnt diese Vorlage für das Programm nutzen:

// Globale Variable 
Lukas lukas; // Klasse Lukas muss erstellt werden

void setup() {
  // Fenster aufbauen und konfigurieren
}

void draw() {
  // Zeichne den "Lukas"
}

void mousePressed() {
  // Reagiere auf Mausklick
}


Niveau 3

Icon Heft.png
Arbeitsauftrag

Programmiert ein "Hau den Lukas" Spiel. Dabei sollen Kreise mit zufälliger Größe, in zufälligen Zeitabständen an zufälligen Positionen im Fenster erscheinen. Wenn der Kreis mit der Maus angeklickt wird, dann wird er grün und verschwindet nicht. Schafft der Spieler es nicht, den Kreis schnell anzuklicken, dann verschwindet der Kreis von alleine wieder.

Nutze dafür die Processing-Methoden

und die Variablen


Tipps
  • Mit random(0, 100) generiert ihr eine Zufallszahl zwischen 0 und 100.
  • Die Methode void mouseClicked() wird ähnlich wie void draw() einfach in das Hauptprogramm geschrieben. Sie wird automatisch aufgerufen, wenn mit der Maus in das Fenster geklickt wird.

Ihr könnt diese Vorlage für das Programm nutzen:

// Globale Variable 
Lukas lukas; // Klasse Lukas muss erstellt werden

void setup() {
  // Fenster aufbauen und konfigurieren
}

void draw() {
  // Zeichne den "Lukas"
}

void mousePressed() {
  // Reagiere auf Mausklick
}


Niveau 4

Icon Heft.png
Arbeitsauftrag

Programmiert ein "Hau den Lukas" Spiel. Dabei sollen Kreise mit zufälliger Größe, in zufälligen Zeitabständen an zufälligen Positionen im Fenster erscheinen. Schafft der Spieler es nicht, den Kreis schnell anzuklicken, dann verschwindet er von alleine wieder. Schafft der Spieler es, den Kreis in einer vorgegebenen Zeit zu "hauen", dann bekommt er Punkte (ggf. abhängig von der Größe des Kreises).

Die Punkte werden im Fenster angezeigt.

Nutze dafür die Processing-Methoden

und die Variablen


Tipps
  • Mit random(0, 100) generiert ihr eine Zufallszahl zwischen 0 und 100.
  • Die Methode void mouseClicked() wird ähnlich wie void draw() einfach in das Hauptprogramm geschrieben. Sie wird automatisch aufgerufen, wenn mit der Maus in das Fenster geklickt wird.

Ihr könnt diese Vorlage für das Programm nutzen:

// Globale Variable 
Lukas lukas; // Klasse Lukas muss erstellt werden

void setup() {
  // Fenster aufbauen und konfigurieren
}

void draw() {
  // Zeichne den "Lukas"
}

void mousePressed() {
  // Reagiere auf Mausklick
}