PyroMax - ilotulituskirjasto

Jaa meneillään olevat projektisi tai valmiit pelit muun yhteisön kanssa täällä.
Post Reply
User avatar
Dibalo
Advanced Member
Posts: 298
Joined: Mon Aug 27, 2007 8:12 pm
Location: Espoo, Finland
Contact:

PyroMax - ilotulituskirjasto

Post by Dibalo » Tue Aug 28, 2007 11:35 pm

Tämä ei nyt ehkä vuodenaikaan juuri liity, eikä tästä sen enempää hyötyä ole, mutta laitetaan silti tänne. Jos vaikka aloittelevat koodarit innostuisivat tutkimaan koodia... ;) Tämä kätevä pikku kirjasto mahdollistaa eri tyyppisten ilotulitusesitysten luomisen, vaikka koodaustaidot olisivat liki nolla. Kirjasto perustuu dynaamiseen muistinhallintaan ja väkisinväännettyhin linkitettyihin listoihin (omiin sellaisiin). Näin olen saanut mahdollisimman joustavan ja nopean alustan teille pyromaaneilla (siitä nimikin ;) ).

PyroMax on äärettömän helppo käyttää: teidän tarvitsee muistaa vain viisi (5) komentoa:

Code: Select all

PYRO_CreateRocket
PYRO_AttachEffect
PYRO_InitAll
PYRO_UpdateAll
PYRO_ParseScript
Kirjaston käyttö on seuraava:
1) luo raketti ja anna sille ominaisuudet
2) lisää rakettiin efekti (panos)
3) toista kohtia 1 ja 2 niin pitkään kuin haluat
4) alusta systeemi PYRO_InitAll()-metodilla
5) päivitä systeemi PYRO_UpdateAll()-metodilla
6) nauti ilotulituksesta! :P


Seuraavassa esimerkki ohjelman koodista, joka luo n. 30 sekuntia ilotulitusta:

Code: Select all

SCREEN 800,600,0

Include "PyroMax.cb"


For i = 1 To 50

   // LUODAAN 50 RAKETTIA (kts. parametrit kirjaston funktioista
   // niissä ON hyvä dokumentaatio
   r = PYRO_CreateRocket(Rand(200,600), 600, Rand(70,110), Rand(50,170), Rand(255), Rand(255), Rand(255), Rand(1000,30000), Rand(500,1500), Rand(15,40), Rand(100,300))

   ec = Rand(1,5)
   // lisätään jokaiselle raketille 1-5 efektiä
   For a = 1 To ec
       PYRO_AttachEffect(r, Rand(30,70), Rand(50,170), Rand(255), Rand(255), Rand(400,1500), Rand(150, 500))
   Next a

Next i


// alustetaan systeemi
PYRO_InitAll()

Repeat
   
   // päivitetään systeemi
   PYRO_UpdateAll()
   __DEBUG_PrintStats(0,0)

DrawScreen
Forever

Ilotulitukset voi myös parsia tiedostosta PYRO_ParseScript(file$)-funktiolla. Todella yksinkertainen esimerkkitiedosto voi näyttää esimerkiksi tältä:

Code: Select all

// NEW ROCKET
//
//      # seuraavaksi lisätään kaikki raketin tiedot (tämä on kommentti)
//      R=124               # raketin väri
//      G=0
//      B=190
//      X=400              # raketin alkusijainti
//      Y=600
//      ANGLE=87           # raketin kulma
//      SPEED=170          # raketin nopeus
//      LAUNCH_TIME=1500    # millisekunteina PYRO_InitAll()-komennosta
//      EXP_TIMER=700       # räjähdysaika millisekunteina laukaisusta
//      POWER=20            # räjähdysvoima
//      TAIL=130            # raketin "hännän" pituus. tämän voi jättää pois, oletusarvo on 100
//
//      # raketin esittelyn sisällä voidaan (ja pitääkin) esitellä raketin käyttämät erikoiseffektit
//      NEW EFFECT
//          # taas säädetään asetukset kuntoon
//          R=251
//          G=25
//          B=106
//   SPEED=80
//          LIFE_TIME=400   # millisekunteina luonnista (isäntäraketin räjähdyksestä)
//          TAIL=210        # efektin "hännän" pituus. tämän voi jättää pois, oletusarvo on 150
//      END EFFECT
//
//      # häntiä voi luoda raketille niin paljon kuin haluaa
//      NEW EFFECT
//          R=85
//          G=210
//          B=75
//   SPEED=95
//          LIFE_TIME=200
//      END EFFECT
//
// END ROCKET
Tietysti nuo "//"-merkit tulee jättää alusta pois, sillä tämä koodi on otettu itse kirjaston esimerkeistä, joten CB-kommentit ovat pakollisia. Huomaathan, että skripti-tiedoissa kommentit lisätään #-merkillä. Jos käytät jotain muuta tapaa, parsija ilmoittaa virheen ja lopettaa ohjelman. Skripti-tiedostot voivat olla vaikka miten pitkiä. Skripti-tiedostoja voi myös parsia useamman kappaleen samaan systeemin, joten ilotulitus-datan ylläpitohelpottuu skriptien pysyessä pieninä.


Seuraavassa esimerkki skripti-tiedoston käyttämisestä kirjaston kanssa:

Code: Select all

SCREEN 800,600,0

Include "PyroMax.cb"

// parsitaan skripti systeemiin
PYRO_ParseScript("sample_pyro.ini")


// alustetaan systeemi
PYRO_InitAll()

Repeat
   
   // päivitetään systeemi
   PYRO_UpdateAll()
   __DEBUG_PrintStats(0,0)

DrawScreen
Forever

Mutta nyt kaikki tarpeellinen on kerrottu: voitte kokeilla itse! Paketti sisältää PyroMax.cb-kirjaston, joka pitää liittää omiin projekteihin mukaan. Lisäksi se sisältää kaksi esimerkkikoodia (kts. ylempää) sekä esimerkkiskriptin ("sample_pyro.ini").

Iloisia tulituksia! :)

Lataa PyroMax
The darkest spells can be found from
http://tunkkaus.blogspot.fi

User avatar
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: PyroMax - ilotulituskirjasto

Post by temu92 » Wed Aug 29, 2007 9:46 am

Testasin ja oli ihan kybercool, se skriptitulitus varsinkin :D Jotenka plussaa sulle :mrgreen:

Nucreal
Newcomer
Posts: 33
Joined: Tue Aug 28, 2007 8:25 am

Re: PyroMax - ilotulituskirjasto

Post by Nucreal » Thu Aug 30, 2007 9:26 am

Heh, No eihän tässä montaa kuukautta Uuteen-vuoteen ole. :D Hienohan tuo.
Life is hell and then you die, so better speed it up with knife!
<--- Typotin käyttäjä nimeni (Nucreal) -> (Nuclear)

MikkoK141_Guest

Re: PyroMax - ilotulituskirjasto

Post by MikkoK141_Guest » Sat Nov 08, 2008 7:15 pm

Anteeksi kauhea nosto mutta onko kellään tätä tallessa jos on niin voisi uppia sen.

User avatar
Ruuttu
Devoted Member
Posts: 687
Joined: Thu Aug 30, 2007 5:11 pm
Location: Finland, Sipoo

Re: PyroMax - ilotulituskirjasto

Post by Ruuttu » Sat Nov 08, 2008 7:38 pm

Apua?!? Latauslinkki ei toimi!

Muuten vaikuttaa erittäin mielenkiintoiselta, olisi kiva nähdä mitä itse koodista löytyy...

MikkoK141_Guest

Re: PyroMax - ilotulituskirjasto

Post by MikkoK141_Guest » Sun Nov 09, 2008 7:47 pm

Dibalo Dibalo... Kaiva tämä koneesi uumenista ja upi uudestaan.

User avatar
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: PyroMax - ilotulituskirjasto

Post by JATothrim » Sun Nov 09, 2008 10:51 pm

:D Tunnen jo tämän kirjaston, taisit esitellä tämän vanhoilla foorumeilla joskus vuosi sitten? Pitää tehdä uudeksivuodeksi tunnin pyromaani skripti.. :P
-On selkeästi impulsiivinen koodaaja joka...
ohjelmoi C++:lla rekursiivisesti instantioidun templaten, jonka jokainen instantiaatio instantioi sekundäärisen singleton-template-luokan, jonka jokainen instanssi käynistää säikeen tulostakseen 'jea'.

User avatar
Wingman
Devoted Member
Posts: 594
Joined: Tue Sep 30, 2008 4:30 pm
Location: Ruudun toisella puolella

Re: PyroMax - ilotulituskirjasto

Post by Wingman » Sun Nov 30, 2008 4:25 am

Linkki ykkösviestissä on jotenkin vanha/rikki :(
- - - -

User avatar
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 5:53 pm

Re: PyroMax - ilotulituskirjasto

Post by Jani » Thu Dec 18, 2008 7:51 pm

Olisi melkein pakko päästä testaamaan, mutta kun ei voi. :(

Onko jollain tämä tietokoneensa syövereissä?
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition

User avatar
Substance
Active Member
Posts: 234
Joined: Fri Mar 14, 2008 6:48 pm

Re: PyroMax - ilotulituskirjasto

Post by Substance » Thu Dec 18, 2008 9:44 pm

Jani wrote:Onko jollain tämä tietokoneensa syövereissä?
Jep. Oleppas hyvä.
Attachments
PyroMax.zip
(7.07 KiB) Downloaded 81 times
Substance aka LittleGreen
Red Encounter - shoot'em uppia - lataus

Post Reply