Kirjautuminen

Haku

Tehtävät

Koodit: QB: Paletin käyttöä

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

Kommentit

Antti Laaksonen [02.04.2003 19:11:44]

#

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

Sami [02.04.2003 19:20:44]

#

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

thefox [02.04.2003 21:41:00]

#

Tuossa "Hieman ohjeita paletin käyttöönsä" näyttää tulleen pieni typo, on 65563 kun pitäisi olla 65536.

Sami [03.04.2003 17:17:30]

#

No niinpäs onkin (tullut sinne vahingossa, kun on kirjoittanut liian nopeasti), korjaan sen välittömästi pois sieltä.

Tatu Peltola [22.04.2003 21:04:49]

#

Onkos toi &H3C8 VARMASTI kaikilla koneilla sama? Vai voiko se olla jossain muussakin osoitteessa?

Sami [22.04.2003 21:25:39]

#

Eiköhän. En ainakaan koskaan ole kuullut mitään muuta.

Dude [12.08.2007 20:19:37]

#

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

Kirjoita kommentti

Muista lukea kirjoitusohjeet.
Tietoa sivustosta