' Aivan yksinkertainen sprite-tekniikkaa esittelevä ohjelma
SCREEN 13 ' näyttötila 320*200
DEF SEG = &HA000 ' tarpeellinen jos halutaan käyttää
' POKEa ruudulle piirtämiseen
DIM tausta&(200) ' luodaan taulukko taustalle
DIM TULI(14, 14, 2) ' luodaan taulukot tulelle
' taulukossa TULI(x,y,0) on sprite 1
' taulukossa TULI(x,y,1) on sprite 2
' taulukossa TULI(x,y,2) on sprite 3
'*avataan tiedostot TULI1.ROM, TULI2.ROM, TULI3.ROM
'*ja tallennetaan ne taulukkoon TULI
FOR z = 0 TO 2
OPEN "TULI" + LTRIM$(RTRIM$(STR$(z + 1))) + ".ROM" FOR INPUT AS #1
FOR a = 0 TO 14
FOR i = 0 TO 14
INPUT #1, arvo
TULI(i, a, z) = arvo
NEXT i
NEXT a
CLOSE
NEXT z
X = 160 ' Spriten X-koordinaatti
Y = 100 ' Spriten Y-koordinaatti
Sprite = 1 ' Sprite mikä näytetään ruudulla
z = 1
qq = 1: ww = 0
XARVO = 1
YARVO = 1
'* Luodaan tausta
FOR a = 0 TO 199
FOR i = 0 TO 319
POKE a * 320 + i, INT(RND * 12 + 16)
NEXT i
NEXT a
'* otetaan tausta muistiin
GET (X, Y)-(X + 14, Y + 14), tausta&
DO ' loopin alku
IF INP(&H60) = 1 THEN END ' INP(&H60) on näppäimistön portti,
' 1 on sen ESC-arvo (eli jos painat
' ESCiä niin ohjelman suoritus loppuu)
SOUND 0, 1 ' pieni tauko väliin
PUT (X, Y), tausta&, PSET ' piirretään tausta ruudulle
'*lasketaan Spriten X- ja Y-koordinaatit
X = X + XARVO
Y = Y + YARVO
IF X > 300 THEN XARVO = -1
IF X < 5 THEN XARVO = 1
IF Y > 180 THEN YARVO = -1
IF Y < 5 THEN YARVO = 1
'* Tausta muistiin
GET (X, Y)-(X + 14, Y + 14), tausta&
'* Piirretään sprite Ruudulle
' huom. 'POKE Y*320+X,VÄRI' on sama kuin 'PSET(X,Y),VÄRI' mutta jonkin verran
' nopeampi
FOR a = 0 TO 14
FOR i = 0 TO 14
IF TULI(i, a, Sprite - 1) <> 0 THEN POKE (a + Y) * 320 + i + X, TULI(i, a, Sprite - 1)
NEXT i
NEXT a
'* Muutetaan spriten arvoa
SWAP qq, ww
IF qq = 1 THEN
Sprite = Sprite + z
IF Sprite = 4 THEN Sprite = 2: z = -1
IF Sprite = 0 THEN Sprite = 2: z = 1
END IF
LOOP