Introduktion

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.

Trin 1: Forstå koden
Superklasse: Partikel
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;
    }
}

Subklasser: Gnister og Røg
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);
    }
}
Hovedprogram
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));
    }
}
Trin 2: Udvid koden
  • Opret minimum to nye subklasser, der arver fra Partikel. Eksempler kunne være:
    • En boble, der bevæger sig opad og ændrer farve over tid.
    • En Gnistrepartikel, der blinker ved at skifte mellem at være synlig og usynlig.
    • En RotationsPartikel, der roterer om sin egen akse, mens den bevæger sig.
    • En SpiralPartikel, der følger en spiralbevægelse.
    • En MagnetiskPartikel, der langsomt bevæger sig mod musens position.
    • Det er kun fantasien der sætter grænser.
  • Overskriv metoder og tilføj evt. nye metoder for at give dine nye partikler unik adfærd.
  • Integrér dine partikler i dit digitale kæledyrs-projekt.
    • Det kan være der skal komme hjerter når man leger med kæledyret.
    • Det kan også være der skal komme bobler op fra kæledyret når det sover.