Einzelnen Beitrag anzeigen

Igotcha

Registriert seit: 22. Dez 2003
544 Beiträge
 
Delphi 2006 Professional
 
#1

Rotierendes Array

  Alt 12. Jul 2004, 14:40
Hallo zusammen,

im Rahmen der Programmierung eines Spiels (nicht mit Delphi) stoße ich auf ein Problem, welches mir wirklich Kopfzerbrechen bereitet.

Realisiert werden soll ein von oben nach unten scrollender Sternenhintergrund. Dazu habe ich mir 4 "Tiles" á 64x64 Punkte erstellt, die dann bei einer 1024x768 Auflösung in 12 Zeilen zu 16 Spalten in einem Array liegen. Aus programmtechnischer Sicht benötige ich natürlich eine 13. Zeile im oberen nicht-sichtbaren Bereich, der ja reingescrollt wird.

Nehmen wir mal diesen Code, um das BGMAP-Array zu füllen:

Code:
FOR iY=0 TO 12     
   FOR iX=0 to 15       
       BGMAP(iX,iY)=RND(3)
   NEXT iX
NEXT iY

So, jetzt gibt es die "Game-Loop", die den Hintergrund forwährend scrollt:

Code:
DO
FOR iY=0 TO 12
   FOR iX=0 to 15
      PASTE IMAGE BGMAP(iX,iY),(iX*64),(iY*64)+iStarScroll
   NEXT iX
NEXT iY
 
   INC iStarScroll
   IF iStarScroll>64
      iStarScroll=0
   ENDIF
SYNC
LOOP
Damit werden die Tiles kontinuierlich auf dem Screen gezeichnet und anschließend wird der Y-Wert zum Pasten um 1 Pixel erhöht, bis die nicht-sichtbare Reihe von oben vollständig im Screen ist (nach 64 Pixeln) - funktioniert auch soweit.

Jetzt kommt aber das Problem:

Sobald ein Umlauf von 64 Pixeln erfolgt ist, muss ich die unten rausgescrollte Zeile natürlich wieder oben anfügen und da hakt es im Moment...

Zur Verdeutlichung, wie es sein müsste (die angegebenen Werte beziehen sich auf den Y-Wert im Array BGMAP - momentan noch iY):

1. Durchlauf
0,1,2,3,4,5,6,7,8,9,10,11,12

2. Durchlauf
12,0,1,2,3,4,5,6,7,8,9,10,11

3. Durchlauf
11,12,0,1,2,3,4,5,6,7,8,9,10
usw.

Da ich das Array selbst nicht anfassen möchte, suche ich einen Weg, dieses im Code zu realisieren, also irgendwie mathematisch ein "rotieren" des Arrays in der Schleife abzubilden.

Gruß Igotcha
  Mit Zitat antworten Zitat