fb:porticula NoPaste
10.3: Parallax Scrolling
Uploader: | nemored |
Datum/Zeit: | 29.10.2011 00:47:42 |
Hinweis: Dieser Quelltext ist Bestandteil des Projekts OpenBook: 2D-Spieleprogrammierung, zu dem es auf FreeBASIC-Portal.de eine Projektseite gibt.
' *** CODE 10.3: Parallax Scrolling
DIM AS INTEGER bildbreite = 400, bildhoehe = 300
SCREENRES bildbreite, bildhoehe, 32
DIM AS ANY PTR ebene(1 TO 3) ' Bildspeicher der Ebenen
DIM AS INTEGER zaehler = 0, i
DIM AS INTEGER b(1 TO 3) = { 900, 900, 900 } ' Breite der Ebenen
DIM AS INTEGER posX(1 TO 3) = { 0, 0, 0 } ' Position innerhalb der Ebenen
DIM AS INTEGER schnell(1 TO 3) = { 8, 3, 1 } ' Geschwindigkeit der Ebenen
' Ebenen laden
FOR i = 1 TO 3
ebene(i) = IMAGECREATE(b(i) + bildbreite, bildhoehe)
BLOAD "ebene" & i & ".bmp", ebene(i)
' Stueck des linken Randes an den rechten Rand anhaengen
PUT ebene(i), (b(i),0), ebene(i), (0,0)-STEP(bildbreite-1,bildhoehe-1), PSET
NEXT
DO
' neue Position der Ebenen bestimmen
zaehler += 1
FOR i = 1 TO 3
IF (zaehler MOD schnell(i)) = 0 THEN posX(i) += 1
' Wenn das Ende der Ebene erreicht ist, an den Anfang zurueckkehren
IF posX(i) >= b(i) THEN posX(i) -= b(i)
NEXT
' Ebenen zeichnen
SCREENLOCK
FOR i = 1 TO 3
PUT (0,0), ebene(i), (posX(i),0)-STEP(bildbreite-1,bildhoehe-1), TRANS
NEXT
SCREENUNLOCK
SLEEP 1
LOOP UNTIL INKEY <> ""
' Speicher bereinigen
FOR i = 1 TO 3
IMAGEDESTROY ebene(i)
NEXT