Problem mit Map als Bank
Übersicht

zimtstern#3Betreff: Problem mit Map als Bank |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
setzte die 3 Variablen am Anfang (map_breite, ...) am Anfang Global, dann sollte es gehen.... |
||
zimtstern#3 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke !!! ![]() Ich hab ganz übersehen dass ich die 'map_breite' und 'map_hohe' vars in den Funktionen verwende ohne sie vorher zu übergeben. ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group