Projekt:2020/Processing Arrays: Unterschied zwischen den Versionen

keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 29: Zeile 29:


{{Aufgabe:Start|Icon=Processing_icon.png}}
{{Aufgabe:Start|Icon=Processing_icon.png}}
Erstelle zwei Ballons und einige Spitzen und teste dein Programm.
Erstelle zwei Ballons und einige Spitzen und teste dein Programm. (Rufe die <code>draw()</code> und <code>update()</code> Methoden der Objekte innerhalb der <code>draw()</code> Methode des Hauptprogramms auf.)
{{Aufgabe:End}}
{{Aufgabe:End}}


Zeile 95: Zeile 95:
Baue die Spitzen in dein Projekt ein und ergänze eine weitere Zählschleife in der <code>draw()</code> Methode des Hauptprogramms, die wiederum die <code>draw()</code> Methode jeder Spitze im Array aufruft.
Baue die Spitzen in dein Projekt ein und ergänze eine weitere Zählschleife in der <code>draw()</code> Methode des Hauptprogramms, die wiederum die <code>draw()</code> Methode jeder Spitze im Array aufruft.
{{Aufgabe:End}}
{{Aufgabe:End}}
{{Aufgabe:Start}}
Ergänze ein Ballon-Array, das zehn <code>Ballon</code>-Objekte speichert. Erstelle die Ballon-Objekte und zeichne die Ballons in der <code>draw()</code> Methode. Ergänze auch einen Aufruf der <code>update()</code> Methode, damit die Ballons nach oben fliegen.
{{Aufgabe:End}}
== Ballons gegen Spitzen ==
Sobald die Ballons am oberen Bildschirmrand ankommen (und die Spitzen berühren), müssen sie natürlich platzen. Sobald ein Ballon geplatzt ist, kann ein neuer Ballon am unteren Bildrand erscheinen.
{{Aufgabe:Start}}
Prüfe nach jedem <code>update()</code>, ob der Ballon am oberen Rand angekommen ist. Falls ja, erstelle einen neuen <code>Ballon</code> im entsprechenden Array-Index.
(Du kannst auch das Platzen mit einem entsprechenden Effekt versehen, wenn du möchtest.)
{{Aufgabe:End}}
== Eine Zwischenlösung ==
{{Lösung:Start}}
Ballon
<syntaxhighlight lang="Java" line="1">
class Ballon {
private float x, y, speed, size;
private color clr;
public Ballon() {
x = random(10, width-10);
y = height-10;
speed = random(20, 40)/10;
size = random(20, 30);
clr = color((int) random(50, 210), (int) random(50, 210), (int) random(50, 210));
}
public void draw() {
noStroke();
fill(clr);
ellipse(x, y, size*.7, size);
}
public void update() {
y -= speed;
}
public float getY() {
return y;
}
}
</syntaxhighlight>
Spitze
<syntaxhighlight lang="Java" line="1">
class Spitze {
private float x, size;
public Spitze(int pX) {
x = pX;
size = random(10, 50);
}
public void draw() {
noStroke();
fill(33,33,33);
triangle(x, 0, x+10, 0, x+5, size);
}
}
</syntaxhighlight>
Hauptprogramm
<syntaxhighlight lang="Java" line="1">
Ballon[] ballons = new Ballon[10];
Spitze[] spitzen = new Spitze[60];
void setup() {
size(600, 600);
// Spitzen erstellen
for( int i = 0; i < spitzen.length; i++ ) {
spitzen[i] = new Spitze(i*10);
}
// Ballons erstellen
for( int i = 0; i < ballons.length; i++ ) {
ballons[i] = new Ballon();
}
}
void draw() {
  background(34, 28, 196);
// Spitzen zeichnen
for( int i = 0; i < spitzen.length; i++ ) {
spitzen[i].draw();
}
// Ballons zeichnen und aktualisieren
for( int i = 0; i < ballons.length; i++ ) {
ballons[i].draw();
ballons[i].update();
if( ballons[i].getY() < 20 ) {
ballons[i] = new Ballon();
}
}
}
</syntaxhighlight>
{{Lösung:End}}
8.581

Bearbeitungen