this is one of the hardest tasks in the exam. There are another variations in the other exams which I will include in the next days in another topics.
Now This task in german
Schreiben Sie eine Klasse Pulsar, die einen Kreis malt, der sich ausdehnt und
wieder zusammenzieht (also pulsiert). Die Klasse hat 5 Eigenschaften: x/yPosition, Geschwindigkeit (der Ausdehnung/Zusammenziehung, als float),
Durchmesser und eine boolesche Variable active.
Im Konstruktor sollen x/y zufällig, Durchmesser auf 10 und Geschwindigkeit
zufällig (zwischen 0.2 und 1.5) gesetzt werden.
Schreiben Sie zwei Methoden fürs Zeichnen (render) und Updaten (update).
Der Durchmesser des Kreises soll max. 30 und min. 5 betragen. Wenn die Variable active false ist, soll
das Objekt nicht pulsieren, aber gezeichnet werden.
Im Hauptprogramm erzeugen Sie ein Fenster der Größe 100x100 mit weißem Hintergrund und 100
Pulsar-Objekten, die alle gezeichnet werden und pulsieren.
Zusätzlich soll per Tastendruck die Bewegung von der Hälfte aller Objekte angehalten werden können.
Beim nochmaligen Druck wird sie fortgesetzt usw. (Verwenden Sie dazu die Instanzvariable active).
At the moment my Code is this but it is not finished yet:
Pulsar[] p = new Pulsar[100];
void setup()
{
size(100,100);
}
void draw()
{
}
At first my class should be mostly right (I think)
What is missing is that I was not able to write the void keypressed section but I will do this when everything is right.
Could someone controll the class section and say to me what I must exchange or include?
After that I will show you the next try of this code.
You are posting the homework incorrect. It looks distorted. Don’t format it as code but as a quote " " .
Like this - also translate it into English, because most people here speak English.
Schreiben Sie eine Klasse Pulsar, die einen Kreis malt, der sich ausdehnt und
wieder zusammenzieht (also pulsiert). Die Klasse hat 5 Eigenschaften: x/yPosition, Geschwindigkeit (der Ausdehnung/Zusammenziehung, als float),
Durchmesser und eine boolesche Variable active.
Im Konstruktor sollen x/y zufällig, Durchmesser auf 10 und Geschwindigkeit
zufällig (zwischen 0.2 und 1.5) gesetzt werden.
Schreiben Sie zwei Methoden fürs Zeichnen (render) und Updaten (update).
Der Durchmesser des Kreises soll max. 30 und min. 5 betragen. Wenn die Variable active false ist, soll
das Objekt nicht pulsieren, aber gezeichnet werden.
Im Hauptprogramm erzeugen Sie ein Fenster der Größe 100x100 mit weißem Hintergrund und 100
Pulsar-Objekten, die alle gezeichnet werden und pulsieren.
Zusätzlich soll per Tastendruck die Bewegung von der Hälfte aller Objekte angehalten werden können.
Beim nochmaligen Druck wird sie fortgesetzt usw. (Verwenden Sie dazu die Instanzvariable active).
Nach der Aufgabenstellung braucht der Konstruktor keine Parameter.
Du sollst xpos, ypos und speed nur zufällig festlegen. Du kannst es also einfacher machen.
Andere Anmerkungen
Du hast dia nicht auf 10 gesetzt
Das Pulsieren wird so nicht funktionieren, denke ich.
Das kannst du testen, wenn du die Klasse von draw aus auch benutzt. So wie es jetzt ist, kannst du die Klasse nicht testen, und wir auch nicht. Versuche nur Code zu posten, der ein lauffähiges Programm ist.
Ich habe nun mein Code erweitert.
Leider funktioniert es nicht.
Ich verstehe es nicht.
Habe nun den Code auf das Hauptprogramm übertragen aber leider erscheint da gar nichts.
Eigentlich müssten nun die Bälle aufblasen und kleiner werden -.-.
You are working with a negative diameter, which works, but is more like a work-around. There is no such thing as a negative diameter in the real world.
Instead, remember the ball that gets reflected on the sides of the rect: x = x + speedX;
I would make the pulsar like the ball!
Instead of dia++; better say dia = dia + diaSpeed; (or speed) (or dia += diaSpeed;). The var diaSpeed would be 1 initially or random like in the assignment. (One could argue, this belongs into the method update() instead of render(). Why?)
Then instead of dia = -dia; better diaSpeed = - diaSpeed; (in both places in your code) (or speed)
Es steht sogar in der Aufgabe
Geschwindigkeit (der Ausdehnung/Zusammenziehung, als float)
da ist dein speed, den du aber nicht mehr benutzt!!!
if(active == true) // or just if(active)
{
// what belongs here??? You already have this.
}
Details
in keyPressed() - a function outside the class - you want to for-loop over the array(!) and randomly switch half of the pulsars to inactive. E.g. with if(random(100)<50).... and then count the active ones and stop at 50.
active must be inside the class because it is a property of the class and different for each pulsar (the objects derived from the class).