Vesiefektistä sai johdettua melko helposti lumisade-efektin, ja tässä se nyt on. Toisin kuin vesiefektissä, pudonneiden lumihiutaleiden taulukkotila vapautuu, eli lunta sataa loputtomasti.
SCREEN 13 TYPE hiutale x AS INTEGER y AS INTEGER END TYPE Max = 800 'hiutaleitten määrä kerrallaan 'mitä ruudulla näkyy LOCATE 5, 5: PRINT "Lunta tulvillaan..." DIM h(Max) AS hiutale DO FOR i = 1 TO Max PRESET (h(i).x, h(i).y) 'vanha hiutale pois IF h(i).x = 0 THEN 'uusi hiutale h(i).x = INT(RND * 320) + 2 h(i).y = 0 - INT(RND * 200) + 1 ELSE IF h(i).y < 199 AND h(i).x > 1 THEN IF POINT(h(i).x, h(i).y + 1) = 0 THEN 'suoraan alas h(i).y = h(i).y + 1 ELSEIF POINT(h(i).x - 1, h(i).y + 1) = 0 THEN 'alas ja vasemmalle h(i).y = h(i).y + 1 h(i).x = h(i).x - 1 ELSEIF POINT(h(i).x + 1, h(i).y + 1) = 0 THEN 'alas ja oikealle h(i).y = h(i).y + 1 h(i).x = h(i).x + 1 ELSE PSET (h(i).x, h(i).y), 26 + i MOD 4 'hiutale laskeutui h(i).x = 0 'uudestaan ylös END IF ELSE PSET (h(i).x, h(i).y), 26 + i MOD 4 'hiutale laskeutui h(i).x = 0 'uudestaan ylös END IF END IF PSET (h(i).x, h(i).y), 15 'uusi hiutale NEXT LOOP WHILE INKEY$ <> CHR$(27)
Hieman likaista lunta... :)
Tätäkin koodinpätkää voi nopeuttaa lisäämällä alkuun rivin:
DEFINT A-Z
Ei voi laittaa peliin, valittaa jotain tossa DIM h(Max) jutun h:ssa.
Kun mainitsit vesiefektin, puhuitko tekemästäni Vesipisarat-efektistä vai jostain muusta? Olen tehnyt samantapaisen, missä tipuu kiviä kasoihin ja sitten vierii alas kunnes kasa on täysin kolmio. Vähän niin kuin tämä, paitsi että taulukkotila ei vapaudu, koska jo pudonneet kivet voivat muiden vieriessä lähteä uudestaan vierimään.
jos "Lunta tulvillaan..." korvataan 40:llä viivalla, lunta tulee maahan säännöllisemmin.
kiva. koittakaa pistää Max=22222.
Aihe on jo aika vanha, joten et voi enää vastata siihen.