Näytön täyttäminen satunnaisilla pikseleillä ei liene vaikea operaatio. Eri asia on sitten se miten estää pikselin piirtymisen samaan kohtaan tai saada ohjelmasta tarpeeksi nopea. Tässä aliohjelmassa nuo kumpikin ongelmaa on ratkaistu. Koodi on testattu hidastuksen alla ja nopeus on ollut siedettävä. Lisäksi bonuksena on mukana pikselien väriskaalan määritys ^__^
-Grey-
'Noisea.. DECLARE SUB NOISE (Mincolor%, Maxcolor%) SCREEN 7 SLEEP 1 NOISE 0, 15 'Satunnaista pikselimössöä SLEEP 1 NOISE 1, 2 'kaksiväristä pikselimössöä SLEEP 1 NOISE 0, 0 'Yksiväristä pikselimössöä SLEEP 1 SUB NOISE (Mincolor%, Maxcolor%) RANDOMIZE 80000 DIM NoiseDim(80, 50) AS INTEGER DO W$ = INKEY$ A% = INT(RND * 80) B% = INT(RND * 50) IF NoiseDim(A%, B%) = 0 THEN FOR C% = 0 TO 240 STEP 80 PSET (A% + C%, B%), INT((Maxcolor% - Mincolor% + 1) * RND + Mincolor%) PSET (A% + C%, B% + 50), INT((Maxcolor% - Mincolor% + 1) * RND + Mincolor%) PSET (A% + C%, B% + 100), INT((Maxcolor% - Mincolor% + 1) * RND + Mincolor%) PSET (A% + C%, B% + 150), INT((Maxcolor% - Mincolor% + 1) * RND + Mincolor%) NEXT OK% = OK% + 1 NoiseDim(A%, B%) = 1 END IF IF W$ <> "" THEN EXIT DO IF OK% > 3999 THEN EXIT DO LOOP END SUB
tämähän oli varsin mukava esimerkki, pitkästä aikaa innostuin taas qb:sta :)
mietin että eikös toinen tapa luoda vastaavanlainen satunnaisjuttu ole:
pikseli ettii satunnaisen paikan jos sen kohdan väri on musta niin pikseli menee siihen jos väri onkin jokin muu niin pikseli siirtyy seuraavaan paikkaan jne...?
ja tuo vielä jonkin for-lausekkeen sisälle joka toistuu niin monesti kuin näytölle mahtuu pikseleitä...
itse olen miettinyt semmoista tapaa mutta ongelma iskeekin siinä että kuin tarkistetaan että mikä väri on kohdassa x,y?
:/
mutta tämä oli mukava esimerkki :)
lainaus:
mietin että eikös toinen tapa luoda vastaavanlainen satunnaisjuttu ole:
pikseli ettii satunnaisen paikan jos sen kohdan väri on musta niin pikseli menee siihen jos väri onkin jokin muu niin pikseli siirtyy seuraavaan paikkaan jne...?
Tuo sitä juuri hidastaisi. Mutta tämä algoritmi on siitä niin nerokas, että se ei näyttäisi arpovan ollenkaan samoja koordinaatteja, joten mitään tarkistusta ei tarvita. Grey selittikin asiasta minulle enemmän Messengerissä. Tuo RANDOMIZE 80000:kin on tarkaan valittu luku, jolla tuo tapahtuu nopeasti.
Ajattelin että olisi ollut pidempi kun koodia ei näkynyt kokonaan kuvausta luettaessa :)
Onpas nopea!
Jee, kiva
Aihe on jo aika vanha, joten et voi enää vastata siihen.