Fő tartalom
Programozás
Tantárgy/kurzus: Programozás > 5. témakör
8. lecke: Részecskerendszerek- Bevezetés a részecskerendszerekbe
- Egyetlen részecske
- Feladat: Levélhullás
- Részecskerendszer
- Feladat: Halbuborékok
- Részecskerendszerek rendszere
- Feladat: Tűzcsiholás
- Részecsketípusok
- Feladat: Varázsüst
- Részecskerendszerek erőkkel
- Feladat: Folyami sziklák
- Projekt: Lénykolóniák
© 2023 Khan AcademyFelhasználási feltételekAdatkezelési tájékoztatóSüti figyelmeztetés
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.