Kirjoittaja: Sami
Kirjoitettu: 30.03.2003 – 30.03.2003
Tagit: grafiikka, koodi näytille, vinkki
Paletin käyttöä screen 13 (ja miksei jossain muussakin) tilassa.
Paletista muutetaan värit 0-127 ja sitten niistä piirretään kuva, jota liikutetaan ruudulla eteen- tai taaksepäin.
Antakaa kommenttia tästä (etenkin jos havaitsette virheitä!)
' Tässä muutetaan paletin värejä eri väreiksi, lopussa on hieman tarkemmin neuvottu paletin käyttöä ' Jotain pikkusäätöjä, joita voi muuttaa: nopeus = 1 ' Negatiivinen arvo liikuttaa kuvaa vasemmalle, positiivinen oikealle sininen = 1 ' Tuleeko sinistä? (0 tai 1) vihrea = 0 ' Tuleeko vihreätä? (0 tai 1) punainen = 1 ' Tuleeko punaista? (0 tai 1) SCREEN 13 ' Vaihdetaan näyttötila CLS FOR i = 0 TO 63 ' Muutetaan paletin värit 0-63 PALETTE i, sininen * i * 65536 + vihrea * i * 256 + i * punainen LINE (i, 0)-(i, 200), i, BF NEXT FOR i = 64 TO 127 ' Muutetaan paletin värit 64-127 PALETTE i, sininen * (127 - i) * 65536 + vihrea * (127 - i) * 64 + (127 - i) * punainen LINE (i, 0)-(i, 200), i, BF NEXT DO ' Ja sitten vielä liikutetaan kuvaa a = a + nopeus FOR i = 0 TO 127 LINE ((a + i) MOD 320, 0)-((a + i) MOD 320, 200), i NEXT i IF a < 0 THEN a = 320 IF a > 320 THEN a = 0 LOOP WHILE INKEY$ = "" SLEEP SCREEN 0 END ' Hieman ohjeita paletin käyttöön: ' Paletin väriarvo annetaan lukuna 0-4144959 (sininen * 65563 + Vihreä * 256 + punainen, jokainen väri voi olla jokin luku väliltä 0-63) ' ' Esim: ' SCREEN 13 ' LINE (100, 100)-(200, 200), 4, BF ' Piirretään punainen neliö ' SLEEP ' PALETTE 4, 0 * 65536 + 256 * 63 + 20 ' Väri numero 4 muuttui kirkkaan vihreäksi ' SLEEP ' ^ ^ ^ ^ ' | | | | ' | | | Kuinka paljon punaista tulee (Tässä sitä tulee jonkin verran) ' | | | ' | | Kuinka paljon vihreätä tulee (Tässä sitä on niin paljon kuin mahdollista) ' | | ' | Kuinka paljon sinistä tulee (Tässä sitä ei tule yhtään) ' | ' Muutettavan värin numero
Ihan kelpo esimerkki PALETTE-kommennon käytöstä. Ja palettiahan voi vaihtaa myös näin, vähän nopeammin:
OUT &H3C8, värin numero OUT &H3C9, R OUT &H3C9, G OUT &H3C9, B
Huomasin tuon itsekin ja tässä on pieni testi siitä (se vaihtaa paletin mustavalkoiseksi ja kääntää värit 250 kertaa out:ia ja palettea käyttäen ja antaa sitten tulokset, ero on melkoisen suuri):
SCREEN 13 FOR i = 0 TO 63 LINE (i * 4, 0)-(i * 4 + 4, 199), i, BF NEXT i FOR i = 0 TO 63 OUT &H3C8, i+1 OUT &H3C9, i OUT &H3C9, i OUT &H3C9, i NEXT i SLEEP aika1 = TIMER FOR a = 1 TO 250 FOR i = 0 TO 63 OUT &H3C8, i + 1 OUT &H3C9, i OUT &H3C9, i OUT &H3C9, i NEXT i FOR i = 63 TO 0 STEP -1 OUT &H3C8, (64 - i) OUT &H3C9, i OUT &H3C9, i OUT &H3C9, i NEXT i NEXT a aika1stop = TIMER SLEEP aika2 = TIMER FOR a = 1 TO 250 FOR i = 0 TO 63 PALETTE i + 1, 65536 * i + 256 * i + i NEXT i FOR i = 63 TO 0 STEP -1 PALETTE (64 - i), 65536 * i + 256 * i + i NEXT i NEXT a aika2stop = TIMER SLEEP LOCATE 1, 1 COLOR 100 PRINT "OUT", aika1stop - aika1 PRINT "PALETTE", aika2stop - aika2 SLEEP
Tuossa "Hieman ohjeita paletin käyttöönsä" näyttää tulleen pieni typo, on 65563 kun pitäisi olla 65536.
No niinpäs onkin (tullut sinne vahingossa, kun on kirjoittanut liian nopeasti), korjaan sen välittömästi pois sieltä.
Onkos toi &H3C8 VARMASTI kaikilla koneilla sama? Vai voiko se olla jossain muussakin osoitteessa?
Eiköhän. En ainakaan koskaan ole kuullut mitään muuta.
Sami kirjoitti:
Huomasin tuon itsekin ja tässä on pieni testi siitä (se vaihtaa paletin mustavalkoiseksi ja kääntää värit 250 kertaa out:ia ja palettea käyttäen ja antaa sitten tulokset, ero on melkoisen suuri):...
Mulla tulos oli OUTilla 0.328125 ja PALETTElla 13.28906