I denne opgave skal du arbejde med nedarvning og bruge det til at udvide et partikelsystem. Du får udleveret en superklasse og to subklasser, og din opgave er at tilpasse og udvide systemet med nye partikeltyper.
class Partikel {
float x, y, vx, vy, levetid;
Partikel(float x, float y) {
this.x = x;
this.y = y;
this.vx = random(-1, 1);
this.vy = random(-1, 1);
this.levetid = 255; // Starter med fuld levetid
}
void bevæg() {
x += vx;
y += vy;
levetid -= 2;
}
void tegn() {
fill(255, levetid); // Brug alpha til at fade ud
ellipse(x, y, 10, 10);
}
boolean erDød() {
return levetid <= 0;
}
}
class Gnister extends Partikel {
Gnister(float x, float y) {
super(x, y);
}
@Override
void bevæg() {
super.bevæg();
vy += 0.1; // Tyngdekraft
}
}
class Røg extends Partikel {
Røg(float x, float y) {
super(x, y);
this.vx *= 0.5; // Langsommere bevægelse
this.vy *= 0.5;
}
@Override
void tegn() {
fill(150, levetid); // Grå farve
ellipse(x, y, 15, 15);
}
}
ArrayList<Partikel> partikler;
void setup() {
size(400, 400);
partikler = new ArrayList<>();
}
void draw() {
background(0);
for (int i = partikler.size() - 1; i >= 0; i--) {
Partikel p = partikler.get(i);
p.bevæg();
p.tegn();
if (p.erDød()) {
partikler.remove(i);
}
}
}
void mousePressed() {
for (int i = 0; i < 10; i++) {
partikler.add(new Gnister(mouseX, mouseY));
}
for (int i = 0; i < 5; i++) {
partikler.add(new Røg(mouseX, mouseY));
}
}