Ohňostroje
Program bol napísaný do súťaže Ohňostroj v Jave. Nikto iný sa do tejto súťaže nezapojil, takže bohužiaľ ani neviem ako by dopadol v porovnaní s konkurenciou.
Ovládanie
Po zapnutí programu môžete po pravej strane vidieť niekoľko ovládacích prvkov.
- Štart / stop - Môžete vykresľovanie zastaviť treba v priebehu explózie.
- Ohňostroje - Existujú 4 typy ohňostrojov, tu si z nich môžete vybrať.
- Pozadie - Máte na výber z niekoľkých pozadia, ich účel je len navodenie atmosféry.
- Snímka - Kliknutím na tlačidlo s ikonou fotoaparátu bude vytvorený snímka plátna. Snímka sa uloží pod aktuálnym časom v adresári, v ktorom bol spustený program.
- Zvuk - Tlačidlo s ikonou reproduktora vypína a zapína zvuk. Zvuk ale nepracuje úplne správne, takže keď ho nezapnete, o nič neprídete.
Ohňostroj vytvoríte kliknutím na ľubovoľnom mieste na plátne.
- Ľavé tlačidlo myši - Aktuálne vybraný ohňostroj.
- Pravé tlačidlo myši - Predchádzajúci ohňostroj.
- Kliknutie na koliesko - Ohňostroj pred predchádzajúcim ohňostrojom.
Vnútri zdrojového kódu
Po kliknutí na plátno sa vytvorí nová inštancia jedného z potomkov triedy code.fire.Firework a následne sa zaradí do zoznamu medzi ostatné objekty.
Každých niekoľko milisekúnd sa cyklom prejde celý zoznam a každý z ohňostrojov si prejde ďalším svojím cyklom. Následne sa všetky vykreslí na plátno.
Každý ohňostroj je zložený z poľa častíc (code.fire.Point). Častice má niekoľko vlastností - farba, vitalita ... Vitalita, životnosť je doba (počet cyklov), po ktorý sa bude častice vykresľovať. Pretože ak budú v ohňostroji častice s rozdielnou životnosťou, ohňostroj bude vyzerať aspoň trochu menej umelo.
Samotný výbuch sa potom vytvára zo stredu do okolia. Poloha častice sa vypočíta pomocou goniometrických funkcií:
poziceX = vzdalenostOdStredu * Math.cos(uhelVeStupnich * (Math.PI / 180)); poziceY = vzdalenostOdStredu * Math.sin(uhelVeStupnich * (Math.PI / 180));
Kde vzdialenosť od stredu je väčšinou aktuálny cyklus.
Ešte k súradniciam pripočítame polovicu šírky a výšky pole - ohňostroj má svoj stred uprostred, nie v ľavom hornom rohu.
poziceX += sirkaPole / 2; poziceY += vyskaPole / 2;
A nakoniec, keď už všetky častice vymiznú, bude ohňostroj nastavený ako dokončenú a pri ďalšom cykle sa odstráni.
Galéria
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 299x (1.79 MB)
Aplikácia je vrátane zdrojových kódov v jazyku Java