Kirjoittaja: hunajavohveli
Kirjoitettu: 17.06.2004 – 17.06.2004
Tagit: grafiikka, koodi näytille, vinkki
Revontulia esittävä efekti. Revontulet muodostuvat 320 peräkkäisestä ylhäältä alas kulkevasta viivasta, joiden väri liukuu tummasta vaaleaan ylhäältä alas. Viivat liikkuvat animaation aikana satunnaisesti ylös ja alas. Samalla vaihdetaan palettia, joka määrää revontulien sävyn. Viivojen korkeutta voi säätää muokkamalla Korkeus-muuttujaa alkumäärittelyissä.
DECLARE SUB VaihdaPaletti (Red AS SINGLE, Green AS SINGLE, Blue AS SINGLE)
'Revontulet 17.6.2004 by Hunajavohveli
'(aloitettu kenties pari vuotta sitten julkaisup?iv?st?, unohtui kaiketi
'johonkin kovalevyn syrj?iseen nurkkaan p?ly? ker??m??n)
DEFINT A-Z 'eik? mit??n desimaaleja...
DIM Red AS SINGLE
DIM Green AS SINGLE
DIM Blue AS SINGLE
DIM RedC AS SINGLE
DIM GreenC AS SINGLE
DIM BlueC AS SINGLE '...paitsi n?iss? kuudessa
DIM H(-1 TO 319, 1 TO 2) AS INTEGER 'taulukko johon voidaan tallentaan
'edellisten revontuliviivojen
'korkeudet (kumitusta varten)
'alkuasetukset: (kannattaa kokeilla eri arvoja)
CONST Korkeus = 25 'revontuliviivojen korkeus
'v?riarvot v?lilt? 0-10, yli 10 kiepauttaisi paletin ymp?ri (ei hieno)
Red = 5 'punainen
Green = 5 'vihre?
Blue = 5 'sininen (niin kuin kukaan ei tiet?isi)
RedC = .1 'v?rien vaihtumismuuttujat
GreenC = .1
BlueC = .1
'alkuarvot loppuvat t?h?n
SCREEN 13 'hm...?
VaihdaPaletti Red, Green, Blue 'vaihdetaan paletti v?riarvojen mukaan
RANDOMIZE TIMER 'satunnaislukugeneraattori
H(-1, 1) = 100 'jokaisella on oltava 'naapuriviiva' vasemmalla puolella
H(0, 1) = 100
FOR i = 1 TO 319
H(i, 1) = H(i - 1, 1) - 4 + INT(RND * 9) 'alkukorkeuksien arvonta
NEXT i
'p??luuppi
DO
FOR x = 0 TO 319 'silmukka
LINE (x, H(x, 2) + 1)-(x, H(x, 2) + Korkeus), 0 'kumitetaan vanha viiva
FOR b = 1 TO Korkeus
PSET (x, H(x, 1) + b), Savy + b 'piirrett?n uusi viiva
NEXT b
H(x, 2) = H(x, 1) 'tallennetaan nykyinen viiva kumitustaulukkoon (ks. 6 rivi? taaksep?in)
H(x, 1) = H(x, 1) - 1 + CINT(RND) * 2 'siirret??n seuraavaa viivaa uuteen paikkaan...
IF H(x, 1) - H(x - 1, 1) > 2 THEN H(x, 1) = H(x, 1) - 1 'ei sent??n liikaa suhteessa 'naapuriviivaan'
IF H(x, 1) - H(x - 1, 1) < -2 THEN H(x, 1) = H(x, 1) + 1 '...
NEXT x
Red = Red + RedC 'vaihdetaan s?vy?
Green = Green + GreenC
Blue = Blue + BlueC
IF Red > 10 THEN Red = 10: RedC = -RND / 10 'ei saa menn? yli...
IF Green > 10 THEN Green = 10: GreenC = -RND / 10
IF Blue > 10 THEN Blue = 10: BlueC = -RND / 10
IF Red < 0 THEN Red = 0: RedC = RND / 10 'eik? ali...
IF Green < 0 THEN Green = 0: GreenC = RND / 10
IF Blue < 0 THEN Blue = 0: BlueC = RND / 10
VaihdaPaletti Red, Green, Blue 'uusi paletti
WAIT &H3DA, 8 'pient? hidastusta (poista jos haluat)
LOOP UNTIL INKEY$ = CHR$(27) 'Escist? poisSUB VaihdaPaletti (Red AS SINGLE, Green AS SINGLE, Blue AS SINGLE) 'paletinvaihtoaliohjelma FOR i = 1 TO Korkeus OUT &H3C8, i OUT &H3C9, i * Red * 6.3 / Korkeus OUT &H3C9, i * Green * 6.3 / Korkeus OUT &H3C9, i * Blue * 6.3 / Korkeus NEXT i END SUB
Wou...
Pistäkääs joku binaryy jos viitsitte, kun multa se ei luonnistu. Tai sitten Gwaur voisi hankkia QBasicille kääntäjän.
Mikset itse hanki? :P
Hieno, mitä nyt kommenttien ä-kysymysmerkit hämäsivät alkuun :)
Tosi upee...
lainaus:
Mikset itse hanki? :P
No koska minulla on jo. :)
Ihan kiva... :D
Vovvaavuuu! Hieno kun mikä! Binaryy: http://koti.mbnet.fi/koodaaja/jotaki/REPOTULI.
QB efektiksi varsin nätti. Tosin toimi järjettömän hitaasti Linuxin alla dosboxilla.
aika hieno nopeutettu versio :PP
Nyt sain viimein kotisivutilaa, joten tuolta voi ladata toisen exen. Tuossa paketissa tulee tosin mukana muitakin efektejä.
http://koodaa.mine.nu/~vohveli/QB efekt pak.zip
Onhan toi hieno, mut tota alareunaa voisit tasottaa, kun en ite jaksa.