If you're seeing this message, it means we're having trouble loading external resources on our website.

Ha webszűrőt használsz, győződj meg róla, hogy a *.kastatic.org és a *.kasandbox.org nincsenek blokkolva.

Fő tartalom

Részecskerendszerek rendszere

Tekintsük át, meddig jutottunk. Tudjuk kezelni az egyedi Particle (Részecske) objektumot, készítettünk Particle objektumokat vezérlő rendszert is, amit „particle system”-nek (részecskerendszernek) hívtunk. A részecskerendszert független objektumok összességeként definiáltuk. De nem tekinthetjük magát a részecskerendszert is objektumnak? Ha ez a helyzet (márpedig ez a helyzet), akkor semmi sem gátolhat meg minket abban, hogy részecskerendszerek gyűjteményét, azaz rendszerek rendszerét definiáljunk.
Ez a gondolatmenet persze továbbvihető; napokra bezárkózhatsz a pincébe, hogy felvázold a rendszerek rendszerének a rendszerének a rendszerének a rendszerének a rendszerét. Annak is a rendszerét. Végül is a világ így működik. Egy szerv sejtek rendszeréből áll, az emberi szervezet szervek rendszere, egy kerület emberi testek rendszere, egy város kerületek rendszere, és így tovább a végtelenségig. Ez kétségkívül érdekes gondolatmenet, de nem ez a mi jelenlegi célunk. Ugyanakkor hasznos tudni, hogyan kell olyan programot írni, amely több részecskerendszert vezérel, melyek mindegyike több részecskét tart nyilván. Vegyük az alábbi helyzetet:
  • Üres rajzvászonnal indítasz.
  • Kattintasz az egérrel, és a kattintás helyén generálsz egy részecskerendszert.
  • Minden kattintásra egy új rendszert készítesz a kattintás egérpozíciójában.
Próbáld ki!
Milyen programmal tudnák ezt elérni? Az előző fejezetben a ps változó egyetlen ParticleSystem objektumra hivatkozott.
var ps = new ParticleSystem(new PVector(width/2, 50));

draw = function() {
  background(50, 50, 50);
  ps.addParticle();
  ps.run();
};
Most, hogy több rendszerünk van, melyek száma tovább növekedhet, nem szeretnénk egyedi változókban tárolni azokat. Tömböt fogunk használni a rendszerek nyomon követéséhez. A program elején egy üres tömbbel kezdjük:
var systems = [];
Ha a felhasználó kattint az egérrel, készítünk egy új ParticleSystem objektumot, és hozzáadjuk a tömbhöz:
mousePressed = function() {
  systems.push(new ParticleSystem(new PVector(mouseX, mouseY)));
};
Ezután a draw() függvényben ahelyett, hogy egyetlen ParticleSystem objektumra hivatkoznánk, végigvesszük az összes rendszert a tömbben, és mindegyikre meghívjuk a run() metódust.
draw = function() {
  background(50, 50, 50);
  for(var i = 0; i < systems.length; i++){
    systems[i].addParticle();
    systems[i].run();
  }
};
Próbáld ki az általunk megírt program futtatását! (A programban található megjegyzések: 1. sor: Dan Shiffman, natureofcode.com példája alapján; 3. sor: Egyetlen Részecske objektum.)

Szeretnél részt venni a beszélgetésben?

Még nincs hozzászólás.
Tudsz angolul? Kattints ide, ha meg szeretnéd nézni, milyen beszélgetések folynak a Khan Academy angol nyelvű oldalán.