Erstellte Map in Programm einbinden
Verfasst: 16.03.2014 19:13
Hallo.
habe mit einem Tile Editor ne Map erstellt und möchte die nun in mein Programm einbinden.
Die Map heißt Room1.Map
Wie mache ich das nun das er mir die Room.Map ausließt und die einzelnen Tiles die die Map zeichnen auf dem Screen anzeigt.
Habe schon ein 2 Dimensionales Array erstellt und die Map in Tiles eingeteilt.
Hier der Code meines Programmes:
Könnt ihr mir da behilflich sein?
Grüße
habe mit einem Tile Editor ne Map erstellt und möchte die nun in mein Programm einbinden.
Die Map heißt Room1.Map
Wie mache ich das nun das er mir die Room.Map ausließt und die einzelnen Tiles die die Map zeichnen auf dem Screen anzeigt.
Habe schon ein 2 Dimensionales Array erstellt und die Map in Tiles eingeteilt.
Hier der Code meines Programmes:
Code: Alles auswählen
; --- InitSystem
If InitSprite() = 0
MessageRequester("Fehler", "Kann Grafik nicht Initialisieren..(DirectX7 oder höher notwendig!)", 0)
End
EndIf
If InitKeyboard() = 0
MessageRequester("Fehler", "Kann Keyboard nicht Initialisieren..(DirectX7 oder höher notwendig!)", 0)
End
EndIf
If InitSound() = 0
MessageRequester("Fehler", "Kann Sound nicht Initialisieren..(DirectX7 oder höher notwendig, Soundkarte notwendig!)", 0)
End
EndIf
If InitMouse() = 0
MessageRequester("Fehler", "Kann Maus nicht Initialisieren..", 0)
End
EndIf
IncludeFile "Room1.map"
;konstanten
#MAPSIZEY = 21 ;Felder
#MAPSIZEX = 29
#TileSize = 32
#StartfeldX = 10
#StartfeldY = 9
#Start_Armor = 100
#Start_Lives = 3
Enumeration
;Sound
;sprite
#none_sprite
EndEnumeration
Structure Game
QUIT.i
Pause.i
Lives.i
EndStructure
Structure Player
Sprite.i
SollX.i
SollY.i
X.f
Y.f
FeldX.i
FeldY.i
Speed.f
armor.i
WeaponID.i
List weapons.i()
List armors.i()
List items.i()
EndStructure
Global Dim MapArray(#MAPSIZEX,#MAPSIZEY) ;X,Y
Global Settings.Game
Global Player.Player
Settings\Pause = #False
Settings\QUIT = #False
Player\SPEED = #Start_Lives
Player\ARMOR = #Start_Armor
OpenWindow(0, 0, 0, 1024, 768, "RPG", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, 1024, 768)
UsePNGImageDecoder()
UseOGGSoundDecoder()
Define event
Define resourcen.s = "resourcen\"
Global Sprite_Player = LoadSprite(#PB_Any, "resourcen\player.bmp")
Global Sprite_Wall = LoadSprite(#PB_Any, "resourcen\Tile_Wall.bmp")
Procedure AddWeapon(WeaponID.i)
If (AddElement(player\Weapons()))
player\Weapons() = WeaponID
EndIf
EndProcedure
Procedure Addarmor(ArmorID.i)
If (AddElement(player\armors()))
player\armors() = ArmorID
EndIf
EndProcedure
Procedure Additems(ItemID.i)
If (AddElement(player\items()))
player\items() = ItemID
EndIf
EndProcedure
Procedure TileMap(Array MapArray(2),FeldX, FeldY, spriteID)
MapArray(FeldX, FeldY) = Spriteid
EndProcedure
Procedure LOAD_MAP(Room)
Protected X, Y
Select Room
Case 1 ;// Room 1
;// objekte
;// X = 0 bis 29
;// Y = 0 bis 21
;// setzt Sprite auf die Felder
TileMap(MapArray(),#StartfeldX, #StartfeldY,Sprite_Player)
TileMap(MapArray(),10, 10, Sprite_Wall)
TileMap(MapArray(),11, 10, Sprite_Wall)
TileMap(MapArray(),12, 10, Sprite_Wall)
TileMap(MapArray(),13, 10, Sprite_Wall)
TileMap(MapArray(),14, 10, Sprite_Wall)
TileMap(MapArray(),15, 10, Sprite_Wall)
TileMap(MapArray(),15, 9, Sprite_Wall)
TileMap(MapArray(),15, 8, Sprite_Wall)
TileMap(MapArray(),15, 7, Sprite_Wall)
TileMap(MapArray(),15, 6, Sprite_Wall)
TileMap(MapArray(),15, 5, Sprite_Wall)
;// passe startpixel an
For X = 0 To #MAPSIZEX
For Y = 0 To #MAPSIZEY
If MapArray(X,Y) = Sprite_Player
;// spieler feld gefunden
player\X = X*#TileSize
player\Y = Y*#TileSize
Break 2
EndIf
Next y
Next x
EndSelect
EndProcedure
;//STEUERUNG______________________________________________________
Procedure Steuerung()
ExamineKeyboard()
Protected X, Y
;// feld ermitterln
X = player\X/#TileSize
Y = player\Y/#TileSize
If KeyboardPushed(#PB_Key_Left)
If Not Sprite_Wall > player\X And Sprite_Wall + #TileSize < Player\X + #TileSize Or Sprite_Wall > player\Y And Sprite_Wall + #TileSize < Player\X + #TileSize
player\X - Player\SPEED
Else
EndIf
EndIf
If KeyboardPushed(#PB_Key_Right)
If Not MapArray(X + 1,Y) = Sprite_Wall
player\X + Player\SPEED
Else
EndIf
EndIf
If KeyboardPushed(#PB_Key_Up)
If Not MapArray(X,Y) = Sprite_Wall
player\Y - Player\SPEED
Else
EndIf
EndIf
If KeyboardPushed(#PB_Key_Down)
If Not MapArray(X,Y + 1) = Sprite_Wall
player\Y + Player\SPEED
Else
EndIf
EndIf
EndProcedure
;// DISPLAY SPRITES______________________________________________________
Procedure Display_map()
Protected X, Y
For X = 0 To #MAPSIZEX
For Y = 0 To #MAPSIZEY
If MapArray(X,Y) = Sprite_Wall
DisplayTransparentSprite(Sprite_Wall, X*#TileSize, Y*#TileSize)
EndIf
Next Y
Next X
EndProcedure
Procedure Display_objects()
;// Spieler
DisplayTransparentSprite(Sprite_Player,Player\X,Player\Y)
EndProcedure
;//DEBUG
Procedure gamedebug()
Debug "--- player pos ---"
Debug "X" + player\X
Debug "y" + player\Y
Debug "feld x " + Str(player\X/#TileSize)
Debug "feld y " + Str(player\y/#TileSize)
EndProcedure
;// lade map
LOAD_MAP(1)
;//MAINLOOP
Repeat
ClearScreen(0)
Gamedebug()
Steuerung()
Display_objects()
Display_map()
FlipBuffers()
Event = WindowEvent()
If Event = #PB_Event_CloseWindow : Settings\QUIT = #True : EndIf
If KeyboardReleased(#PB_Key_Escape) : Settings\QUIT = #True : EndIf
Until Settings\QUIT=#True
Grüße