[Tuto]Utilliser une map .fmp avec Purebasic
Publié : mar. 14/juin/2005 20:04

Tout d'abord j'ai fait ce tuto car j'ai eu beaucoups de mal a exploiter une map .fmp ( format de Mappy ) avec Purebasic ...
Mappy est un logiciel pour faire des Maps avec des tiles pour vos jeux par exemple ...
Mappy a deux formats : le MAP qui est un format très simple et le FMP qui est un format plus compliqué mais qui a l'avantage de pouvoir gérer plusieurs Layers et qui a les datas integrées dans un seul fichier .
Donc passons aux choses sérieuses :

1°) Pour commencer telechargez ce pack : http://nintendoland.free.fr/fichers/mappytest.zip
Ce pack contient deux fichiers mappyeng.pb qui est la librairie permettant le lire une Map et Test.fmp qui est la map que nous allons uttiliser .
2°) Une fois que vous avez le pack mettez ces fichiers dans le meme dossier .
3°) Bon maintenant je vais essayer de vous expliquer le code pour lire une map ...
Code : Tout sélectionner
IncludeFile "mappyeng.pb"
MSPERFRAME = 15 ;facultatif
mapmaxlayers.l = 2 ;facultatif
Global px.l
Global py.l
Au debut on inclut la librarie pour pouvoir l'utilliser dans notre programme.
Puis deux lignes facultatives : on definit le nombre de FPS du programme et le nombre de Layers ...
Ensuite on declare deux variables globales la position en x de la map et se position en y
Code : Tout sélectionner
If InitSprite() = 0 Or InitKeyboard() = 0
MessageRequester("Erreur","Impossible d'ouvrir DirectX",0)
End
EndIf
OpenScreen(800,600,32,"Tuto Mappy")
Code : Tout sélectionner
MapLoad ("test.FMP")
MapInitAnims ()
Mapload c'est pour charger une map et Mapinitanims c'est pour charger les animations de la map !
C'est simple !
Code : Tout sélectionner
Repeat
ExamineKeyboard()
mapupdateanims()
If KeyboardPushed(#PB_Key_Up) : py.l-5 : EndIf
If KeyboardPushed(#PB_Key_Down) : py.l+5 : EndIf
If KeyboardPushed(#PB_Key_Left) : px.l-5 : EndIf
If KeyboardPushed(#PB_Key_Right) : px.l+5 : EndIf
On uttilise la fonction mapupdateanims() pour animer les tiles de la carte .
Et la on uttilise cette serie de condition pour faire "scroller" la carte avec les flèches du clavier .
Code : Tout sélectionner
StartDrawing(ScreenOutput())
FlipBuffers()
ClearScreen(0,0,0)
MapDrawBG (px.l, py.l, 0, 0, 800, 600)
MapDrawFG (px.l, py.l, 0, 0, 800, 600, 0)
StopDrawing()
On fait Flipbuffers et Clearscreen , inevitable


Puis la on affiche les deux layers grace a cette fonction très simple aussi .
Code : Tout sélectionner
Until KeyboardPushed(#PB_Key_Escape)
MapFreeMem ()
End
Donc vous devriez obtenir :
Code : Tout sélectionner
IncludeFile "mappyeng.pb"
MSPERFRAME = 15
mapmaxlayers.l = 2
Global px.l
Global py.l
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
MessageRequester("Erreur","Impossible d'ouvrir DirectX",0)
End
EndIf
OpenScreen(800,600,32,"Tuto Mappy")
MapLoad ("test.FMP")
MapInitAnims ()
Repeat
ExamineKeyboard()
mapupdateanims()
If KeyboardPushed(#PB_Key_Up) : py.l-5 : EndIf
If KeyboardPushed(#PB_Key_Down) : py.l+5 : EndIf
If KeyboardPushed(#PB_Key_Left) : px.l-5 : EndIf
If KeyboardPushed(#PB_Key_Right) : px.l+5 : EndIf
StartDrawing(ScreenOutput())
FlipBuffers()
ClearScreen(0,0,0)
MapDrawBG (px.l, py.l, 0, 0, 800, 600)
MapDrawFG (px.l, py.l, 0, 0, 800, 600, 0)
StopDrawing()
Until KeyboardPushed(#PB_Key_Escape)
MapFreeMem ()
End


Et aussi je n'ai pas mis dans le code une limite auc mouvement que vous pouvez faire ... Donc si vous depassez les limites de la map, le programme va planter oups ^^

PS : Ceci ne permet que d'afficher une Map , si quelqu'un trouve un moyen de gerer les collisions

