Metropoli BBS
VIEWER: put.bas MODE: TEXT (CP437)
' 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

[ RETURN TO DIRECTORY ]