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í.

Fireworks

Program byl napsán do soutěže Ohňostroj v Javě. Nikdo jiný se do této soutěže nezapojil, takže bohužel ani nevím jak by dopadl ve srovnání s konkurencí.

Ovládání

Po zapnutí programu můžete po pravé straně vidět několik ovládacích prvků.

  • Start/stop - Můžete vykreslování zastavit třeba v průběhu exploze.
  • Ohňostroje - Existují 4 typy ohňostrojů, zde si z nich můžete vybrat.
  • Pozadí - Máte na výběr z několika pozadí, jejich účel je jen navození atmosféry.
  • Snímek - Kliknutím na tlačítko s ikonou fotoaparátu bude vytvořen snímek plátna. Snímek bude uložen pod aktuálním časem v adresáři, ve kterém byl spuštěn program.
  • Zvuk - Tlačítko s ikonou reproduktoru vypíná a zapíná zvuk. Zvuk ale nepracuje úplně správně, takže když ho nezapnete, o nic nepřijdete.

Ohňostroj vytvoříte kliknutím na libovolném místě na plátně.

  • Levé tlačítko myši - Aktuální vybraný ohňostroj.
  • Pravé tlačítko myši - Předchozí ohňostroj.
  • Kliknutí na kolečko - Ohňostroj před předchozím ohňostrojem.

Uvnitř zdrojového kódu

Po kliknutí na plátno se vytvoří nová instance jednoho z potomků třídy code.fire.Fire­work a následně se zařadí do seznamu mezi ostatní objekty.

Každých několik milisekund se cyklem projde celý seznam a každý z ohňostrojů si projde dalším svým cyklem. Následně se všechny vykreslí na plátno.

Každý ohňostroj je složen z pole částic (code.fire.Po­int). Částice má několik vlastností - barva, vitalita... Vitalita, životnost je doba (počet cyklů), po kterou se bude částice vykreslovat. Protože pokud budou v ohňostroji částice s rozdílnou životností, ohňostroj bude vypadat alespoň trochu méně uměle.

Samotný výbuch se pak vytváří ze středu do okolí. Poloha částice se vypočítá pomocí goniometrických funkcí:

poziceX = vzdalenostOdStredu * Math.cos(uhelVeStupnich * (Math.PI / 180));
poziceY = vzdalenostOdStredu * Math.sin(uhelVeStupnich * (Math.PI / 180));

Kde vzdálenost od středu je většinou aktuální cyklus.

Ještě k souřadnicím přičteme polovinu šířky a výšky pole - ohňostroj má svůj střed uprostřed, ne v levém horním rohu.

poziceX += sirkaPole / 2;
poziceY += vyskaPole / 2;

A nakonec, když už všechny částice vymizí, bude ohňostroj nastaven jako dokončený a při dalším cyklu se odstraní.


Galerie

Program byl vytvořen v roce 2013.

 

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 298x (1.79 MB)
Aplikace je včetně zdrojových kódů v jazyce Java

 

Všechny články v sekci
Zdrojákoviště Java - Swing
Program pro vás napsal Hartrik
Avatar
Uživatelské hodnocení:
3 hlasů
Autor zde začínal jako amatérský hobby programátor
Aktivity