Fireworks

Java Swing Zdrojákoviště 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ženo 272x (1.79 MB)
Aplikace je včetně zdrojových kódů v jazyce java

 

  Aktivity (1)

Program pro vás napsal Hartrik
Avatar
Autor měl dříve programování jen jako hobby, nyní studuje informatiku na vysoké škole.

Jak se ti líbí článek?
Celkem (3 hlasů) :
55555


 


Miniatura
Všechny články v sekci
Zdrojákoviště Java - Swing

 

 

Komentáře

Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zatím nikdo nevložil komentář - buď první!