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 »

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
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: PyroMax - ilotulituskirjasto

Post by temu92 »

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 »

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 »

Anteeksi kauhea nosto mutta onko kellään tätä tallessa jos on niin voisi uppia sen.
User avatar
Ruuttu
Devoted Member
Posts: 688
Joined: Thu Aug 30, 2007 5:11 pm
Location: Finland, Sipoo

Re: PyroMax - ilotulituskirjasto

Post by Ruuttu »

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 »

Dibalo Dibalo... Kaiva tämä koneesi uumenista ja upi uudestaan.
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: PyroMax - ilotulituskirjasto

Post by JATothrim »

: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'.
Wingman
Devoted Member
Posts: 594
Joined: Tue Sep 30, 2008 4:30 pm
Location: Ruudun toisella puolella

Re: PyroMax - ilotulituskirjasto

Post by Wingman »

Linkki ykkösviestissä on jotenkin vanha/rikki :(
- - - -
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: PyroMax - ilotulituskirjasto

Post by Jani »

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 5:48 pm

Re: PyroMax - ilotulituskirjasto

Post by Substance »

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