Processing Objekter: Forskelle mellem versioner

Fra HTX Arduino
Spring til navigation Spring til søgning
Linje 103: Linje 103:


[[fil:opretteNyTab.png|300px|Menuen der giver mulighed for at oprette ny Tab]]
[[fil:opretteNyTab.png|300px|Menuen der giver mulighed for at oprette ny Tab]]
Man kan godt have flere klasser i samme fil, men det er en rigtig god praksis at kun have en klasse i hver fil, og at filen hedder det samme som klassen. Det gør det også meget nemmere at genbruge sine klasser i andre projekter.
===God praksis i navngivningen===
Man har kun en klasse i hver Tab.
Constructoren skal have samme navn som class-definitionen.
Tab’en kan have et andet navn – men det giver mening at det er det samme.
Genanvend gerne navngivning af egenskaber (x og y er gode navne).
Genanvend gerne navne på metoder (draw og update er sigende navne).
==Klasser som biblioteker==
{{Spiludvikling}}
{{Spiludvikling}}




[[Kategori:Spiludvikling]]
[[Kategori:Spiludvikling]]

Versionen fra 3. jan. 2024, 16:48

Siden her beskriver hvordan Processing kan håndtere objekter. Siden er skrevet ud fra best pracsis omkring objekter.

Eksempler til denne side ligger i Denne ZIP-fil. Der beskrives to forskellige klasser - en Button klasse, der kan lave objekter til knapper på skærmen og en snowflake klasse der demonstrerer hvordan man kan håndtere mange objekter i en datastruktur.

Klasser laver objekter

For at kunne oprette objekter skal man have en klasse der indledes med følgende kode:

class Button {

Hvor Button er navnet eller typen på klassen.

I klassen skal der være en constructor, som er den funktion der opretter det aktuelle objekt. Denne constructor kan i Button-eksemplet se ud som følger:

  Button(float xPos, float yPos, float wid, float hgh, String tx) {
    x = xPos;
    y = yPos;
    w = wid;
    h = hgh;
    txt = tx;
    r = 0;
    c = 0;
    textColor = 255;
    hover = 0;
    txtSz = 25;
    frame = 0;
    frameColor = 0;
  }

Kaldet til denne constructor ser ud som følger:

Button btn1 = new Button(30, 400, 140, 40, "Klik Her");

Der oprettes et objekt btn1 med de parametre i kaldet, som bliver til egenskaber der er angivet i kaldet til Button-constructoren.

Et objekts egenskaber

Hver objekt der oprettes ud fra en klasse vil have en række egenskaber.

Hvert enkelt objekt der oprettes har sine egne individuelle egenskaber, men de er angivet inde i klassens kode.

En typisk klasse vil oprette objektet med de egenskaber der er nødvendige, mens de mere sekundære egenskaber sættes til en standard-værdi der giver mening i anvendelsen af objektet.

Et objekts metoder

Ud over constructoren der opretter objektet, så vil der normalt være en del metoder som kan anvendes til brug i det program man skriver.

Set-metoder

Hvis man vil tilrette objektet ved at rette på de sekundære egenskaber, så vil man normalt oprette set-metoder i klassen, hvor man sender de nye egenskaber over som parametre.

Et eksempel på en set-metode kunne være setColor() eller setRadius() som vist her:

  void setColor(color cl, color hv) {
    c = cl;
    hover = hv;
  }
  
  void setRadius(float round) {
    r = round;
  }

Metoder der anvendes i afviklingen af programmet

For at man skal kunne anvende objekterne i programmet, så skal man kunne vise objektet med en draw() metode eller man skal kunne aflæse om der er klikket på musen med en clicked() metode. De kan se ud som følger:

  void draw() {
    rectMode(CORNER);
    if (mouseIn()) {
      fill(hover);
    } else {
      fill(c);
    }
    strokeWeight(frame);
    stroke(frameColor);
    rect(x, y, w, h, r);
    textSize(txtSz);
    textAlign(CENTER);
    fill(textColor);
    text(txt, x + w/2, y + txtSz / 3 + h/2);
  }

  boolean clicked() {
    if (mouseIn()) {
      if (mousePressed && (mouseButton == LEFT)) {
        return true;
      }
    }
    return false;
  }

Oprettelse af filer med klasser

For at oprette en klasse, så er det en god ide at placere dem i selvstændige filer og navngive dem efter den klasse der er i filen, som det er vise i følgende billede:

Koden til en grundlæggende klasse

For at oprette filen, så kan man klikke på den lille pil ved siden af Tab-navnene, så man får de viste muligheder:

Menuen der giver mulighed for at oprette ny Tab

Man kan godt have flere klasser i samme fil, men det er en rigtig god praksis at kun have en klasse i hver fil, og at filen hedder det samme som klassen. Det gør det også meget nemmere at genbruge sine klasser i andre projekter.

God praksis i navngivningen

Man har kun en klasse i hver Tab.

Constructoren skal have samme navn som class-definitionen.

Tab’en kan have et andet navn – men det giver mening at det er det samme.

Genanvend gerne navngivning af egenskaber (x og y er gode navne).

Genanvend gerne navne på metoder (draw og update er sigende navne).

Klasser som biblioteker

Spiludvikling - Processing
Bruger-input mousePressed() - mouseReleased() - mouseClicked() - mouseMoved() - mouseDragged() - mouseX og mouseY - mouseButton - mousePressed - keyPressed() - keyReleased() - keyTyped() - key - keyCode - keyPressed - Flere taster
Data-model Objekt Placering - Objekt Hastighed - Spilleplade - Flere Objekter - Array i Spil - 2-dimensionelt Array - Spil Hop - Highscore - Start-skærm
Visning Rektangel - Cirkel - Spilleplade - Grafikobjekter - Farver i Spil - Kollision
Spil-tid frameRate - Objekter i Bevægelse - Spilletid - Spil Opdatering - Udvikling i Tid
Objekter Objekter i Bevægelse