Tilemap Scrolling [mal wieder]
Verfasst: 25.02.2008 01:01
Nur lesen wer Zeit hat
Tag,
bin nach Schulstress in letzer Zeit endlich wieder zu meinem
Code gekommen, und hab versucht das Scrolling auf meiner
Tilemap einzubauen...
Um mich wieder reinzuarbeiten, habe ich mir einen schönen
Guide rausgesucht auf GameDev.net, nämlich diesen hier:
http://www.gamedev.net/reference/articl ... cle743.asp
Die untere Funktion habe ich dann in folgende umgewandelt:
Hier sehe ich erstmal keinen Fehler, nur die Variablennamen
sind anders, da mein Code auch schon etwas älter ist.
Ich hab jetzt folgenden Code:
Sorry, falls der Code unübersichtlich sein sollte,
hab mich aber bemüht ihn so übersichtlich wie
möglich zu halten.
Zu meinem Problem:
Welche Werte muss ich denn hier jetzt ändern, damit die
Map Scrollt, wenn der Spieler sich bewegt?
Hab schon stundenlang beinahe alles probiert,
PlayerX - Map_xoff etc. und einen Fehler in meiner
Umsetzung der Funktion aus dem C++ Code kann ich
auch nicht finden.
Grafiken sind hier, sollte sie jemand brauchen.
http://rapidshare.com/files/94653981/Data.rar
http://www.megaupload.com/?d=18IA8751
Wie gesagt, einige wissen evtl. wie lange ich jetzt schon
hinter diesem Problem hänge, und es wäre wirklich toll,
wenn das Problem endlich gelöst wäre... keine Ahnung,
welche Hirnblockade ich da habe.
Sollten Schwierigkeiten bzgl. des Codes auftreten
oder der Grafiken einfach melden...
Schöne Grüße noch,
Rubiko[/u]
Tag,
bin nach Schulstress in letzer Zeit endlich wieder zu meinem
Code gekommen, und hab versucht das Scrolling auf meiner
Tilemap einzubauen...
Um mich wieder reinzuarbeiten, habe ich mir einen schönen
Guide rausgesucht auf GameDev.net, nämlich diesen hier:
http://www.gamedev.net/reference/articl ... cle743.asp
Die untere Funktion habe ich dann in folgende umgewandelt:
Code: Alles auswählen
Macro MAP_Draw(map_drawx, map_drawy)
MapX = map_drawx / 32
MapY = map_drawy / 32
map_xoff = map_drawx & 31
map_yoff = map_drawy & 31
For SY=0 To #SCREEN_Y/#TILESIZE
For SX = 0 To #SCREEN_X/#TILESIZE
DisplaySprite(Map(T_MapY+SY, T_MapX+SX), #TILESIZE*SX-map_xoff, #TILESIZE*SY-map_yoff)
Next SX
Next SY
EndMacro
sind anders, da mein Code auch schon etwas älter ist.
Ich hab jetzt folgenden Code:
Code: Alles auswählen
If InitSprite() And InitKeyboard() And InitMouse() = 0
MessageRequester("Error", "DirectX could not be initialized.")
End
EndIf
;- Constants
#SCREEN_X = 1024
#SCREEN_Y = 768
#SCREEN_DEPHT = 16
#TILESIZE = 32
#GFX_PATH = "Data\gfx\"
#GFX_FILETYPE = ".bmp"
#MAP_PATH = "Data\map\"
#MAP_FILE = 0
#MAP_FILENAME = "map.cdm"
#MAP_TILESX = 32
#MAP_TILESY = 24
;- Map Array
Global Dim Map(128, 128 )
Structure Tiles
id.l
walkable.b
type.l
EndStructure
Global Dim MyTiles.Tiles(1)
MyTiles(0)\id = 0
MyTiles(0)\walkable = 0
MyTiles(0)\type = 0
MyTiles(1)\id = 1
MyTiles(1)\walkable = 1
MyTiles(1)\type = 1
;- Procedures
Procedure GFX_Load()
For id = 0 To 2
LoadSprite(id+1000, #GFX_PATH+Str(id+1000)+#GFX_FILETYPE)
Next
EndProcedure
Procedure MAP_Load()
For n=0 To 128
For t=0 To 128
Map(n, t) = MyTiles(1)\id+1000
Next
Next
EndProcedure
Macro MAP_Draw(map_drawx, map_drawy)
Global MapX = map_drawx / 32
Global MapY = map_drawy / 32
Global map_xoff = map_drawx & 31
Global map_yoff = map_drawy & 31
For SY=0 To #SCREEN_Y/#TILESIZE
For SX = 0 To #SCREEN_X/#TILESIZE
DisplaySprite(Map(T_MapY+SY, T_MapX+SX), #TILESIZE*SX-map_xoff, #TILESIZE*SY-map_yoff)
Next SX
Next SY
EndMacro
;- Variables
PlayerX.l = 512
PlayerY.l = 320
If OpenScreen(#SCREEN_X, #SCREEN_Y, #SCREEN_DEPHT, "")
TransparentSpriteColor(-1, RGB( 255, 0, 255 ))
GFX_Load()
MAP_Load()
LoadSprite(0, #GFX_PATH+"char.bmp")
LoadSprite(1, #GFX_PATH+"cursor.bmp")
Repeat
ExamineKeyboard()
ExamineMouse()
MausX = MouseX()
MausY = MouseY()
ActTileX = (MausX + FineX) / #TILESIZE + MapX
ActTileY = (MausY + FineY) / #TILESIZE + MapY
MAP_Draw(1, 1)
DisplayTransparentSprite(0, PlayerX, 320)
DisplayTransparentSprite(1, MausX, MausY)
If KeyboardPushed(#PB_Key_Left)
EndIf
If KeyboardPushed(#PB_Key_Right)
EndIf
If KeyboardPushed(#PB_Key_Up)
EndIf
If KeyboardPushed(#PB_Key_Down)
EndIf
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
EndIf
End
hab mich aber bemüht ihn so übersichtlich wie
möglich zu halten.
Zu meinem Problem:
Welche Werte muss ich denn hier jetzt ändern, damit die
Map Scrollt, wenn der Spieler sich bewegt?
Hab schon stundenlang beinahe alles probiert,
PlayerX - Map_xoff etc. und einen Fehler in meiner
Umsetzung der Funktion aus dem C++ Code kann ich
auch nicht finden.
Grafiken sind hier, sollte sie jemand brauchen.
http://rapidshare.com/files/94653981/Data.rar
http://www.megaupload.com/?d=18IA8751
Wie gesagt, einige wissen evtl. wie lange ich jetzt schon
hinter diesem Problem hänge, und es wäre wirklich toll,
wenn das Problem endlich gelöst wäre... keine Ahnung,
welche Hirnblockade ich da habe.
Sollten Schwierigkeiten bzgl. des Codes auftreten
oder der Grafiken einfach melden...
Schöne Grüße noch,
Rubiko[/u]