Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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.Fire­work 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.Po­int). Č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é 298x (1.79 MB)
Aplikácia je vrátane zdrojových kódov v jazyku Java

 

Všetky články v sekcii
Zdrojákoviště Java - Swing
Program pre vás napísal Hartrik
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor zde začínal jako amatérský hobby programátor
Aktivity