Problem mit Map als Bank

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

zimtstern#3

Betreff: Problem mit Map als Bank

BeitragFr, Nov 12, 2004 22:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich schreibe gerade ein paar funktionen die das abspeichern einer map mit verschiedenen layern in einer bank ermöglichen soll. Dazu hab ich ein kleines test prog geschrieben das mir eine 'map' mit 4*4 und 3 layern erstellt. in jedes feld die dazugehörige layernummer schreibt, und das alles wieder als zahlen ausgibt. Jedoch wird in der ersten zeile des 2ten layers "1" ausgegeben obwohl es "2" sein müsste. bei allen ersten zeilen scheint der layer um eins nach hinten verschoben. Ich habe alles probiert und bin am verzweifeln:evil:. Lasst den code mal laufen vielleicht seht ihr ja was nicht stimmt

Code: [AUSKLAPPEN]
Graphics 800,600

map_breite   = 4   
map_hohe   = 4
map_layer   = 3

map_bank = CreateMapBank(map_breite,map_hohe,map_layer)


Repeat
Cls



For active_layer = 1 To map_layer
   If active_layer = 1 Then Color 0,0,255
   If active_layer = 2 Then Color 255,0,0
   If active_layer = 3 Then Color 0,255,0
   For active_y = 0 To map_hohe - 1
      For active_x = 0 To map_breite - 1

         i = GetMap_TileData(map_bank,active_x,active_y,active_layer)
         Text 40+20*active_x+(active_layer*50),40+20*active_y+(active_layer*50),Str(i)
         PutMap_Data(map_bank,active_x,active_y,active_layer,active_layer,0)
         
      Next
   Next
Next
Flip
Until KeyHit (1)

;Vars:
;map_bank      zeiger auf Map Bank
;map_breite      Anzahl der Tiles in X Richtung
;map_hohe      Anzahl der Tiles in Y Richtung
;map_layer      Anzahl der Map Layer
;active_layer   Aktiver Layer der Map (in den geschrieben/aus dem gelesen werden soll)


Function CreateMapBank(map_breite,map_hohe,map_layer)
map_bank = CreateBank (map_breite*map_hohe*map_layer*4)
Return map_bank
End Function

Function GetMap_TileData(map_bank,x,y,active_layer)
LayerPos = ((x+y*map_breite)*4)
LayerSize = map_breite*map_hohe*4
LayerOffset = LayerSize*(active_layer-1)
GetPos = LayerPos+LayerOffset
tiledata = PeekShort (map_bank,GetPos)
;subdata = PeekShort (map_bank,GetPos+2)
Return tiledata
End Function

Function PutMap_Data(map_bank,x,y,active_layer,value,sub)
If sub <> 0 Then sub = 2
LayerPos = ((x+y*map_breite)*4)
LayerSize = map_breite*map_hohe*4
LayerOffset = LayerSize*(active_layer-1)
PutPos = LayerPos+LayerOffset+sub
PokeShort map_bank,PutPos,value
End Function

simi

BeitragSa, Nov 13, 2004 12:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

setzte die 3 Variablen am Anfang (map_breite, ...) am Anfang Global, dann sollte es gehen....
 

zimtstern#3

BeitragSa, Nov 13, 2004 14:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke !!! Smile
Ich hab ganz übersehen dass ich die 'map_breite' und 'map_hohe' vars in den Funktionen verwende ohne sie vorher zu übergeben. Embarassed

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group