Voila le script ( comme ça tu pourra comparer ) :
Code : Tout sélectionner
;; German forum: http://robsite.de/php/pureboard/viewtopic.php?t=1957&highlight=
; Author: bourbon
; Date: 09. August 2003
; PB export function for Tile Studio, doesn't run directly - main program, variables etc.
; PB Export Funktion für Tile Studio, läuft nicht direkt - siehe Hinweis
; --------------------------------------------------------
; Tile Studio Definition file für Pure Basic
; (http://www.purebasic.de/)
;
; erwarten sie kein fertiges Programm, es gibt noch vieles
; für sie zu tun, Variablen angleichen, Hauptprogramm, es
; soll für sie auch nur einen Denkanstoß darstellen, letzt-
; endlich gewinnt die eigene Kreativität :-)
;
; Version 1.0 - Februar 2003
; (c)by Bourbon
; Syntax wegen der Kompatibilität von BB übernommen
; --------------------------------------------------------
; --- bitmap file ----------------------------------------
#tileset
#tilebitmap Data\\TS_<TileSetIdentifier>.bmp
#end tilebitmap
#end tileset
; --------------------------------------------------------
#file TS_<ProjectName>.pb
#; ---------- Generated by Tile Studio ----------
#;
#; ACHTUNG, ein paar Werte müssen manuell angepaßt, bzw. ergänzt oder zugewiesen werden!
#;
#; --- Version 1.0 ---
#; *************************************************************************************************
#;
#; Aktuelles Projekt : <ProjectName>
#; Programmierer : <Author>
#; Copyright : <Copyright>
#; Datum der Erstellung : <CurrentDate>
#; Uhrzeit : <CurrentTime>
#; Anmerkungen : Keine
#;
#; *************************************************************************************************
#;
#tileset
##<TileSetIdentifier>_Bitmap = <TileSetNumber> * 8 + 10
#map
##LAYER_<TileSetIdentifier>_<MapIdentifier> = <TileSetNumber> * 16 + 10 + <MapNumber>
##<TileSetIdentifier>_<MapIdentifier>_Overlap = <Overlap>
#end map
#end tileset
#;
#; --- hier die richtigen Werte für unser Windows Fenster eintragen (fürs erste Level z.B.) ---
#;
map.l = #LAYER_Ch_Level1 ; als Beispiel der erste Level von Charlie
mapOverlap.l = 0
ScrollSicht.l = 40
#; get map width (tiles)
Procedure MapWidth(map)
Select map
#tileset
#map
Case #LAYER_<TileSetIdentifier>_<MapIdentifier>
ret = <MapWidth>
#end map
#end tileset
EndSelect
ProcedureReturn ret
EndProcedure
#; get map height (tiles)
Procedure MapHeight(map)
Select map
#tileset
#map
Case #LAYER_<TileSetIdentifier>_<MapIdentifier>
ret = <MapHeight>
#end map
#end tileset
EndSelect
ProcedureReturn ret
EndProcedure
#; get tile width (pixels)
Procedure TileWidth(map)
Select map
#tileset
#map
Case #LAYER_<TileSetIdentifier>_<MapIdentifier>
ret = <TileWidth>
#end map
#end tileset
EndSelect
ProcedureReturn ret
EndProcedure
#; get tile height (pixels)
Procedure TileHeight(map)
Select map
#tileset
#map
Case #LAYER_<TileSetIdentifier>_<MapIdentifier>
ret = <TileHeight>
#end map
#end tileset
EndSelect
ProcedureReturn ret
EndProcedure
#;
; -----------------------------------------------------------------------------
; *** check auf DirectX und Initialisierung von Sprites und Keyboard ***
If InitSprite() = 0 Or InitKeyboard() = 0
MessageRequester("Error","Minimun DirectX Version 7 erforderlich!",#MB_ICONERROR)
End : EndIf
; -----------------------------------------------------------------------------
SetFrameRate(75) ; zeige 75 Frames pro Sekunde an
ScrBreit = ScrollSicht * TileWidth(map) ; bei scrolling "ScrollSicht" ansonst "MapWidth(map)" angeben
ScrHoch = MapHeight(map) * (TileHeight(map) - mapOverlap) ; einen eventuellen Overlap&Scrollwert hier berücksichtigen
hWnd=OpenWindow(0,(GetSystemMetrics_(#SM_CXSCREEN)-ScrBreit)/2,(GetSystemMetrics_(#SM_CYSCREEN)-ScrHoch)/2,ScrBreit,ScrHoch,#PB_Window_TitleBar,"<ProjectName>")
If OpenWindowedScreen(hWnd,0,0,ScrBreit,ScrHoch,0,0,0) = 0
MessageRequester("Error","Es konnte kein Arbeitsfenster geöffnet werden!",#MB_ICONERROR)
End : EndIf
TransparentSpriteColor(-1, <TransparentColorR>, <TransparentColorG>, <TransparentColorB>)
#tileset
#end tileset
#tileset
LoadSprite(#<TileSetIdentifier>_Bitmap, "Data\\TS_<TileSetIdentifier>.bmp", 0)
#end tileset
#tileset
#map
Dim <TileSetIdentifier><MapIdentifier>_Map(<MapWidth>, <MapHeight>)
Restore <TileSetIdentifier><MapIdentifier>_MapData
For y = 1 To <MapHeight>
For x = 1 To <MapWidth>
Read <TileSetIdentifier><MapIdentifier>_Map (x, y)
Next
Next
Dim <TileSetIdentifier><MapIdentifier>_Bounds(<MapWidth>, <MapHeight>)
Restore <TileSetIdentifier><MapIdentifier>_BoundData
For y = 1 To <MapHeight>
For x = 1 To <MapWidth>
Read <TileSetIdentifier><MapIdentifier>_Bounds(x, y)
Next
Next
#end map
#sequence
<TileSetIdentifier>_Seq<SequenceNumber>.s = Chr(<SequenceNumber>) +
#sequencedata "" " + " ""
Chr(<TileNumber>) + Chr(<FrameCount>)
#end sequencedata
#end sequence
Dim <TileSetIdentifier>Sequences.s(<SequenceCount>)
#sequence
<TileSetIdentifier>Sequences(<SequenceNumber>) = <TileSetIdentifier>_Seq<SequenceNumber>$
#end sequence
#map
#; <TileSetIdentifier><MapIdentifier>_Layer
#; movement (x, y) = (x = <ScrollX>, y = <ScrollY>)
#;
#end map
#end tileset
#; get tile number at position (x,y)
Procedure GetTile (map, x, y)
Select map
#tileset
#map
Case LAYER_<TileSetIdentifier>_<MapIdentifier>
ret = <TileSetIdentifier><MapIdentifier>_Map(x, y)
#end map
#end tileset
EndSelect
ProcedureReturn ret
EndProcedure
#; get bounds/map code at position (x,y)
Procedure GetBounds(map, x, y)
Select map
#tileset
#map
Case LAYER_<TileSetIdentifier>_<MapIdentifier>
ret = <TileSetIdentifier><MapIdentifier>_Bounds(x, y)
#end map
#end tileset
EndSelect
ProcedureReturn ret
EndProcedure
Procedure DrawTile(map, x, y, tile)
Select map
#tileset
#map
Case LAYER_<TileSetIdentifier>_<MapIdentifier>
ClipSprite(#<TileSetIdentifier>_Bitmap, 0, tile * TileHeight(map), TileWidth(map), TileHeight(map))
DisplayTransparentSprite(#<TileSetIdentifier>_Bitmap, x, y)
#end map
#end tileset
EndSelect
EndProcedure
#; ************************************************************************************************
#; * HAUPTSCHLEIFE ...
#; *
#; man kann sofort etwas sehen, wenn man für die entsprechenden Werte das jeweilige Level und die
#; entsprechenden Variablen dazu korrekt einsetzt (im Beispiel für Charlie)
Repeat
ClearScreen(0, 0, 0)
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Left) And Map_x > 0
Map_x - 1
EndIf
If KeyboardPushed(#PB_Key_Right) And Map_x ? MapWidth(map) - ScrollSicht ; statt ? kleiner Zeichen einsetzen, liegt an TS :-(
Map_x + 1
EndIf
For datY = 1 To MapHeight(map)
For datX = 1 To MapWidth(map)
block = CHLevel1_Map(datX+Map_x, datY) - 1
ClipSprite(#CH_Bitmap, 0, block*TileHeight(map), TileWidth(map), TileHeight(map))
DisplayTransparentSprite(#CH_Bitmap, (datX-1)*TileWidth(map), (datY-1)*TileHeight(map))
Next
Next
FlipBuffers()
Delay(1)
Until KeyboardPushed(#PB_Key_Escape)
End
#; ************************************************************************************************
; --------------------------------------------------------
#; Mapdaten
#;
DataSection
#tileset
#map
<TileSetIdentifier><MapIdentifier>_MapData:
#mapdata "\nData.l " "," "\nData.l " "\nData.l " ""
<TileNumber:"%3d">
#end mapdata
#; tile size: w = <TileWidth>, h = <TileHeight>
#; Achtung: die Kollisionsdaten sind in Hex, wegen der Übersichtlichkeit
<TileSetIdentifier><MapIdentifier>_BoundData:
#mapdata "\nData.l " "," "\nData.l " "\nData.l " ""
$<BoundMapValue:"%4x">
#end mapdata
#end map
#end tileset
EndDataSection
#; ---------- end of generated file ----------
#end file
; ExecutableFormat=Windows
; FirstLine=1
EOF
http://nintendoland.free.fr/fichers/Test.rar
2°) Voici le lien vers Tile Studio si tu ne l'as pas
http://ovh.dl.sourceforge.net/sourcefor ... .5-bin.zip