Projekt:2020/Processing: Unterschied zwischen den Versionen

5.840 Bytes hinzugefügt ,  09:04, 20. Apr. 2021
Keine Bearbeitungszusammenfassung
 
(9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 11: Zeile 11:
Sinnvolle Anlaufpunkte sind zum Beispiel:
Sinnvolle Anlaufpunkte sind zum Beispiel:


- [https://processing.org/reference/ Die Befehlsreferenz von Processing]
* [https://processing.org/reference/ Die Befehlsreferenz von Processing]
- Der [[Lernpfad:Objektorientierte Programmierung mit Processing|Objektorientierte Programmierung mit Processing]] und das Projekt der letzten Stunde.
* Der [[Lernpfad:Objektorientierte Programmierung mit Processing|Objektorientierte Programmierung mit Processing]] und das Projekt der letzten Stunde.
* Das [https://helmholtz.padlet.org/ngb/i8ovjtmx3cn7rmi8 Padlet zur Wiederholung der OOP].


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.
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 ==
== Schachbrett ==
[[Datei:20210413082443_Schachbrett.png|center|400px]]


=== Niveau 1 ===
=== Niveau 1 ===
Zeile 83: Zeile 86:


== Billard ==
== Billard ==
[[Datei:20210413082703_Billard.png|center|400px]]


=== Niveau 1 ===
=== Niveau 1 ===
Zeile 94: Zeile 99:
* Kreise könnt ihr mit [https://processing.org/reference/circle_.html <code>circle</code>] zeichnen.
* Kreise könnt ihr mit [https://processing.org/reference/circle_.html <code>circle</code>] zeichnen.
* Mit [https://processing.org/reference/PVector.html Vektoren] kann die Bewegung von Objekten leichter berechnet werden.  
* Mit [https://processing.org/reference/PVector.html Vektoren] kann die Bewegung von Objekten leichter berechnet werden.  
** Erstellt einen Vektor z.B. mit <code>PVektor v1 = new PVektor(4.0, 3.0);</code>.
** Erstellt einen Vektor z.B. mit <code>PVector v1 = new PVector(4.0, 3.0);</code>.
** Addiert einen anderen Vektor auf den ersten mit <code>v1.add(v2);</code>.
** Addiert einen anderen Vektor auf den ersten mit <code>v1.add(v2);</code>.
** Greift auf die Koordinaten des Vektors mit <code>v1.x</code> / <code>v1.y</code> zu.
** Greift auf die Koordinaten des Vektors mit <code>v1.x</code> / <code>v1.y</code> zu.
Zeile 111: Zeile 116:
* Kreise könnt ihr mit [https://processing.org/reference/circle_.html <code>circle</code>] zeichnen.
* Kreise könnt ihr mit [https://processing.org/reference/circle_.html <code>circle</code>] zeichnen.
* Mit [https://processing.org/reference/PVector.html Vektoren] kann die Bewegung von Objekten leichter berechnet werden.  
* Mit [https://processing.org/reference/PVector.html Vektoren] kann die Bewegung von Objekten leichter berechnet werden.  
** Erstellt einen Vektor z.B. mit <code>PVektor v1 = new PVektor(4.0, 3.0);</code>.
** Erstellt einen Vektor z.B. mit <code>PVector v1 = new PVector(4.0, 3.0);</code>.
** Addiert einen anderen Vektor auf den ersten mit <code>v1.add(v2);</code>.
** Addiert einen anderen Vektor auf den ersten mit <code>v1.add(v2);</code>.
** Greift auf die Koordinaten des Vektors mit <code>v1.x</code> / <code>v1.y</code> zu.
** Greift auf die Koordinaten des Vektors mit <code>v1.x</code> / <code>v1.y</code> zu.
Zeile 129: Zeile 134:
{{Lösung:Start|Tipps}}
{{Lösung:Start|Tipps}}
* Mit [https://processing.org/reference/PVector.html Vektoren] kann die Bewegung von Objekten leichter berechnet werden.  
* Mit [https://processing.org/reference/PVector.html Vektoren] kann die Bewegung von Objekten leichter berechnet werden.  
** Erstellt einen Vektor z.B. mit <code>PVektor v1 = new PVektor(4.0, 3.0);</code>.
** Erstellt einen Vektor z.B. mit <code>PVector v1 = new PVector(4.0, 3.0);</code>.
** Addiert einen anderen Vektor auf den ersten mit <code>v1.add(v2);</code>.
** Addiert einen anderen Vektor auf den ersten mit <code>v1.add(v2);</code>.
** Greift auf die Koordinaten des Vektors mit <code>v1.x</code> / <code>v1.y</code> zu.
** Greift auf die Koordinaten des Vektors mit <code>v1.x</code> / <code>v1.y</code> zu.
Zeile 151: Zeile 156:
{{Lösung:Start|Tipps}}
{{Lösung:Start|Tipps}}
* Mit [https://processing.org/reference/PVector.html Vektoren] kann die Bewegung von Objekten leichter berechnet werden.  
* Mit [https://processing.org/reference/PVector.html Vektoren] kann die Bewegung von Objekten leichter berechnet werden.  
** Erstellt einen Vektor z.B. mit <code>PVektor v1 = new PVektor(4.0, 3.0);</code>.
** Erstellt einen Vektor z.B. mit <code>PVector v1 = new PVector(4.0, 3.0);</code>.
** Addiert einen anderen Vektor auf den ersten mit <code>v1.add(v2);</code>.
** Addiert einen anderen Vektor auf den ersten mit <code>v1.add(v2);</code>.
** Greift auf die Koordinaten des Vektors mit <code>v1.x</code> / <code>v1.y</code> zu.
** Greift auf die Koordinaten des Vektors mit <code>v1.x</code> / <code>v1.y</code> zu.
Zeile 157: Zeile 162:
** Dreht einen Vektor um einen Winkel mit <code>v1.rotate(HALF_PI);</code>. (Der Winkel wird als [https://nohemiportfiolio2012-2013.weebly.com/uploads/1/9/2/5/19257411/299841037_orig.png?251 Vielfaches von Pi] angegeben. Nutzt dazu die Variablen <code>PI</code>, <code>HALF_PI</code> und <code>QUARTER_PI</code>.)
** Dreht einen Vektor um einen Winkel mit <code>v1.rotate(HALF_PI);</code>. (Der Winkel wird als [https://nohemiportfiolio2012-2013.weebly.com/uploads/1/9/2/5/19257411/299841037_orig.png?251 Vielfaches von Pi] angegeben. Nutzt dazu die Variablen <code>PI</code>, <code>HALF_PI</code> und <code>QUARTER_PI</code>.)
* Es gilt die Formel Ausfallswinkel = Einfallswinkel.
* Es gilt die Formel Ausfallswinkel = Einfallswinkel.
{{Lösung:End}}
== Hau den Lukas ==
[[Datei:20210419223540_HauDenLukas.gif|center|400px]]
=== Niveau 1 ===
{{Collapse:Start}}
{{Aufgabe:Start}}
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
* [https://processing.org/reference/mouseClicked_.html void mouseClicked()]
* [https://processing.org/reference/random_.html float random()]
und die Variablen
* [https://processing.org/reference/mouseX.html mouseX]
* [https://processing.org/reference/mouseY.html mouseY]
{{Aufgabe:End}}
{{Collapse:End}}
{{Lösung:Start|Tipps}}
* Mit <code>random(0, 100)</code> generiert ihr eine Zufallszahl zwischen 0 und 100.
* Die Methode <code>void mouseClicked()</code> wird ähnlich wie <code>void draw()</code> 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:
<syntaxhighlight lang="Java">
// 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
}
</syntaxhighlight>
{{Lösung:End}}
=== Niveau 2 ===
{{Collapse:Start}}
{{Aufgabe:Start}}
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
* [https://processing.org/reference/mouseClicked_.html void mouseClicked()]
* [https://processing.org/reference/random_.html float random()]
und die Variablen
* [https://processing.org/reference/mouseX.html mouseX]
* [https://processing.org/reference/mouseY.html mouseY]
{{Aufgabe:End}}
{{Collapse:End}}
{{Lösung:Start|Tipps}}
* Mit <code>random(0, 100)</code> generiert ihr eine Zufallszahl zwischen 0 und 100.
* Die Methode <code>void mouseClicked()</code> wird ähnlich wie <code>void draw()</code> 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:
<syntaxhighlight lang="Java">
// 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
}
</syntaxhighlight>
{{Lösung:End}}
=== Niveau 3 ===
{{Collapse:Start}}
{{Aufgabe:Start}}
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
* [https://processing.org/reference/mouseClicked_.html void mouseClicked()]
* [https://processing.org/reference/random_.html float random()]
und die Variablen
* [https://processing.org/reference/mouseX.html mouseX]
* [https://processing.org/reference/mouseY.html mouseY]
{{Aufgabe:End}}
{{Collapse:End}}
{{Lösung:Start|Tipps}}
* Mit <code>random(0, 100)</code> generiert ihr eine Zufallszahl zwischen 0 und 100.
* Die Methode <code>void mouseClicked()</code> wird ähnlich wie <code>void draw()</code> 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:
<syntaxhighlight lang="Java">
// 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
}
</syntaxhighlight>
{{Lösung:End}}
=== Niveau 4 ===
{{Collapse:Start}}
{{Aufgabe:Start}}
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
* [https://processing.org/reference/mouseClicked_.html void mouseClicked()]
* [https://processing.org/reference/random_.html float random()]
* [https://processing.org/reference/text_.html void text()]
und die Variablen
* [https://processing.org/reference/mouseX.html mouseX]
* [https://processing.org/reference/mouseY.html mouseY]
{{Aufgabe:End}}
{{Collapse:End}}
{{Lösung:Start|Tipps}}
* Mit <code>random(0, 100)</code> generiert ihr eine Zufallszahl zwischen 0 und 100.
* Die Methode <code>void mouseClicked()</code> wird ähnlich wie <code>void draw()</code> 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:
<syntaxhighlight lang="Java">
// 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
}
</syntaxhighlight>
{{Lösung:End}}
{{Lösung:End}}
8.581

Bearbeitungen