PureBasic

Forums PureBasic
Nous sommes le Jeu 23/Mai/2013 18:44

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 23 messages ]  Aller à la page 1, 2  Suivante
Auteur Message
 Sujet du message: Map Editor 2D
MessagePosté: Mar 07/Juin/2011 15:49 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 05/Sep/2008 11:42
Messages: 883
Localisation: Besançon
Hello,

Je reprogramme complètement un Map Editor 2D et voici la première étape :
- 1 page de tuiles et 1 page carte : on passe de l'un à l'autre avec F1 et F2
- Selection des brush sur la page de tuile et sur la page de carte (space Bar + click gauche)

Il manque :
- paramétrage de la taille de la carte
- paramétrage de la taille de page des tuiles
- système d'ascenseur pour se promener sur une page de tuile ou de carte plus grande (x et y) que l'écran
- chargement/enregistrement de la carte

Tout ça fonctionnait à peu près dans l'ancienne version, je vais l'intégrer rapidement.
Je suis preneur de toutes suggestions pour améliorer le zinzin.

Je réflechis aussi à :
- un systeme permettant de modifier la taille d'une carte existante sans que ça ne chamboule pas tout
- insérer des tuiles animées
- avoir plusieurs types de décors (en lien avec tuiles statiques, tuiles animées)

J'ai découpé les décors en tuile de 32x32 et chaque case de la carte contient le n° de sprite correspondant à la tuile.

Voilà merci à vous si vous voulez tester

Fichiers graphiques :

Tuiles : http://xdji.free.fr/Telechargement/decor01d.jpg Edit : Nouveau fichier de tuiles extra large pour test
Mouse : http://xdji.free.fr/Telechargement/croixblanche.bmp
Curseur : http://xdji.free.fr/Telechargement/Greenpixel.bmp
Font : http://xdji.free.fr/Telechargement/letter1.bmp


Code:
; ------------------------------------------------------------
;
;   Editeur de terrain 2D
;
;    (c) 2011 - Xdji Design & Developpement
;
;   4.60 Beta 1
;
; ------------------------------------------------------------
;


;-
;------           I N I T I A L I S A T I O N
;-




;-----  1) Déclaration



If InitSprite() = 0
  MessageRequester("Error", "Can't open DirectX 7 Or later", 0)
  End
EndIf

If InitSound() = 0
  MessageRequester("Error", "Can't open DirectX 7 Or later", 0)
  End
EndIf

If InitSprite3D() = 0
  MessageRequester("Error", "Direct3D system can't be initialized correctly", 0)
  End
EndIf

If InitKeyboard() = 0 Or InitMouse() = 0
  MessageRequester("Error", "Can't open DirectX 7 or Mouse not found..", 0)
  End
EndIf




;-----  2) Ouvre l'écran
   
    If OpenScreen(1024, 768, 32, "Map Editor 2011") = 0
       MessageRequester("Error", "Can't open a 1024*768 - 32 bit screen !", 0)
       End
     EndIf
     
    UseJPEGImageDecoder()
       
    LoadSprite(0,"Decor01d.jpg", #PB_Sprite_Texture )
    LoadSprite(1,"Greenpixel.bmp", #PB_Sprite_Texture )
    LoadSprite(2,"Croixblanche.bmp", #PB_Sprite_Texture )
   
   
    LoadImage(1, "Decor01d.jpg", #PB_Image_DisplayFormat)
    LoadImage(2, "letter1.bmp", #PB_Image_DisplayFormat )
   
   
    CreateSprite3D(0,0)
    CreateSprite3D(1,1)
    CreateSprite3D(2,2)
   
   
Global PageState.i ; Etat de la page 0 = tuiles, 1 = carte
Global NewBrush.i
Global Dim Brush.i(0)




    ;---Création des tuiles du décor
   
Global n=100
Global FirstSpriteDecor = n
Global SizeCarteX.i,SizeCarteY.i

SizeCarteX=1024/32
SizeCarteY=768/32

Global Dim Mapx.i (SizeCarteX*SizeCarteY)

i=0
For y=0 To SizeCarteY-1
For x=0 To SizeCarteX-1
  Mapx(i)=6
  i+1
Next
Next

For y=0 To (ImageHeight(1)/32)-1
For x=0 To (ImageWidth(1)/32)-1
  CreateSprite(n,32,32,#PB_Sprite_Texture)
   StartDrawing(SpriteOutput(n))
   GrabImage(1, 0, x*32, y*32, 32, 32)
   DrawImage(ImageID(0),0,0)
  StopDrawing()
  TransparentSpriteColor(n, RGB(0, 0, 0))
  CreateSprite3D(n,n)
  n+1
Next
Next

 
;---Création des petites polices

Global FirstSpriteSmallFont = n
Global String$ = " !'#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}"


For j=1 To Len(String$)
  CreateSprite(n,32,32,#PB_Sprite_Texture)
   StartDrawing(SpriteOutput(n))
   GrabImage(2, 0, (j-1)*16, 0, 16, 16)
   DrawImage(ImageID(0),0,0)
  StopDrawing()
  TransparentSpriteColor(n, RGB(0, 0, 0))
  CreateSprite3D(n,n)
   n+1
Next




;-
;------           P R O C E D U R E S
;-

Procedure AfficheTextcentre3D(Text$,y.i,fondu.i)
i=0
For j=1 To Len(Text$)
    DisplaySprite3D(FirstSpriteSmallFont+Asc(Mid(Text$,j,1))-32,i+Random(0)+400-Len(Text$)*8-16, y+Random(0),fondu)
i=i+16     
Next

EndProcedure


;-
;------           T H E   L O O P
;-

    Repeat
     ExamineMouse()
     ExamineKeyboard()
     
     KeyRight.i=0
     KeyUp.i=0
     KeyLeft.I=0
     KeyDown.i=0

     If KeyboardPushed(#PB_Key_F1)
      PageState=0
     EndIf
     If KeyboardPushed(#PB_Key_F2)
      PageState=1
     EndIf
     If KeyboardPushed(#PB_Key_Space)
      Brush=0
     EndIf
     If KeyboardPushed(#PB_Key_Up)
      KeyUp=1
     EndIf
     If KeyboardPushed(#PB_Key_Down)
      KeyDown=1
     EndIf
     If KeyboardPushed(#PB_Key_Right)
      KeyRight=1
     EndIf
     If KeyboardPushed(#PB_Key_Left)
      KeyLeft=1
     EndIf

     
     
     If Start3D()
     ClearScreen(0) 
;-
;-
;--- Page des Tuiles
;-     
  If PageState=0
   If ImageHeight(1)>768
    If KeyUp=1
      TuileY=TuileY-32
      If TuileY<0:TuileY=0:EndIf
    EndIf
    If KeyDown=1
      TuileY=TuileY+32
      If TuileY>ImageHeight(1)-768:TuileY=ImageHeight(1)-768:EndIf
    EndIf
   EndIf
   If ImageWidth(1)>1024
    If KeyLeft=1
      TuileX=TuileX-32
      If TuileX<0:TuileX=0:EndIf
    EndIf
    If KeyRight=1
      TuileX=TuileX+32
      If TuileX>ImageWidth(1)-1024:TuileX=ImageWidth(1)-1024:EndIf
    EndIf
   EndIf
 
   
     DisplaySprite3D(0,-TuileX,-TuileY,255)
     
     
     ;----- Le bouton est appuyé
     
 
     If MouseButton(1)
       If Brush=0:Brush=1:EndIf
       
        ;--       Definit le cadre de sélection
        PosXB=Int(MouseX()/32)*32+32
        PosYB=Int(MouseY()/32)*32+32
        If PosXB=<PosX : PosXB=PosX+32 : EndIf
        If PosYB=<PosY : PosYB=PosY+32 : EndIf
        If PosXB > SpriteWidth(0) : PosXB = SpriteWidth(0): EndIf
       
        ;--       Dessine le cadre de sélection
     
     
     For i=0 To (PosXB-PosX)
      DisplaySprite3D(1,PosX+i,PosY)
      DisplaySprite3D(1,PosX+i,PosYB)
     Next
     
     For i=0 To (PosYB-PosY)
      DisplaySprite3D(1,PosX,PosY+i)
      DisplaySprite3D(1,PosXB,PosY+i)
     Next
 
     
     DisplaySprite3D(2,PosXB-7,PosYB-7)
 
     
     
   Else
     
      ;----- Le bouton est relaché
     
     
      ;--       Création de la Brush
      If Brush=1
        BrushSizex=(PosXB-PosX)/32
        BrushSizey=(PosYB-PosY)/32
        ReDim Brush.i(BrushSizex*BrushSizey)
       
        k=0
        For i=0 To BrushSizex-1
         For j=0 To BrushSizey-1
         
         k=k+1
         Brush(k)=((TuileX+Posx)/32)+((TuileY+Posy)/32)*(ImageWidth(1)/32)+i+j*(ImageWidth(1)/32)
         Next
        Next
       
       
        Brush=2
      EndIf
     
     
      ;--       Dessine la Brush
     
     If Brush=2
       PosX=Int(MouseX()/32)*32
       PosY=Int(MouseY()/32)*32
       If PosX > SpriteWidth(0)-BrushSizex*32 : PosX = SpriteWidth(0)-BrushSizex*32: EndIf
       If PosY > SpriteHeight(0)-BrushSizey*32 : PosY = SpriteHeight(0)-BrushSizey*32: EndIf
       
       
       k=0
       For i=0 To BrushSizex-1
         For j=0 To BrushSizey-1
         
         k=k+1
         DisplaySprite3D(FirstSpriteDecor+Brush(k),PosX+i*32,PosY+j*32)
        Next
       Next
       
     EndIf
     
     
     
     ;--       Dessine la croix blanche
     If brush=0
       PosX=Int(MouseX()/32)*32
       PosY=Int(MouseY()/32)*32
       If PosX > SpriteWidth(0)-32 : PosX = SpriteWidth(0)-32: EndIf
       If PosY > SpriteHeight(0)-32 : PosY = SpriteHeight(0)-32: EndIf
       DisplaySprite3D(2,PosX-7,PosY-7)
     EndIf
   EndIf
   
   
   
EndIf


;-
;-
;--- Page de la carte
;-
  If PageState=1
   
   
    For j=0 To SizeCarteX-1
     For i=0 To SizeCarteY-1
     
      DisplaySprite3D(FirstSpriteDecor+Mapx(j+i*SizeCarteX),j*32,i*32,255)
     Next     
    Next     
     
     ;----- Le bouton est appuyé
     
 
     If MouseButton(1)
       If Brush=0:Brush=1:EndIf
      ;--     Construction d'une Brush
       If Brush=1
       
        ;--       Definit le cadre de sélection
        PosXB=Int(MouseX()/32)*32+32
        PosYB=Int(MouseY()/32)*32+32
        If PosXB=<PosX : PosXB=PosX+32 : EndIf
        If PosYB=<PosY : PosYB=PosY+32 : EndIf
       
       
         If PosXB > SizeCarteX*32 : PosXB = SizeCarteX*32: EndIf
         If PosYB > SizeCarteY*32 : PosYB = SizeCarteY*32: EndIf
     
       
       
       
        ;--       Dessine le cadre de sélection
     
     
     For i=0 To (PosXB-PosX)
      DisplaySprite3D(1,PosX+i,PosY)
      DisplaySprite3D(1,PosX+i,PosYB)
     Next
     
     For i=0 To (PosYB-PosY)
      DisplaySprite3D(1,PosX,PosY+i)
      DisplaySprite3D(1,PosXB,PosY+i)
     Next
 
     
     DisplaySprite3D(2,PosXB-7,PosYB-7)
     EndIf
     
      ;--     Copie de la Brush dans la carte
     
     If Brush=2
       
        k=0
        For i=0 To BrushSizex-1
         For j=0 To BrushSizey-1
         
         k=k+1
         Mapx((Posx/32)+(Posy/32)*SizeCarteX+i+j*SizeCarteX) = Brush(k) ;(Posx/32)+(Posy/32)*16+i+j*16
         
       Next
        Next
       
       
       
     EndIf
     
   Else
     
      ;----- Le bouton est relaché
     
     
      ;--       Création de la Brush
      If Brush=1
        BrushSizex=(PosXB-PosX)/32
        BrushSizey=(PosYB-PosY)/32
        ReDim Brush.i(BrushSizex*BrushSizey)
       
        k=0
        For i=0 To BrushSizex-1
         For j=0 To BrushSizey-1
         
           k=k+1
           
         Brush(k)= Mapx((Posx/32)+(Posy/32)*SizeCarteX+i+j*SizeCarteX)     
           
         Next
        Next
       
       
        Brush=2
      EndIf
     
     
      ;--       Dessine la Brush
     
     If Brush=2
       PosX=Int(MouseX()/32)*32
       PosY=Int(MouseY()/32)*32
       If PosX > SizeCarteX*32-BrushSizex*32 : PosX = SizeCarteX*32-BrushSizex*32: EndIf
       If PosY > SizeCarteY*32-BrushSizey*32 : PosY = SizeCarteY*32-BrushSizey*32: EndIf
       
       
       k=0
       For i=0 To BrushSizex-1
         For j=0 To BrushSizey-1
         
         k=k+1
         DisplaySprite3D(FirstSpriteDecor+Brush(k),PosX+i*32,PosY+j*32)
        Next
       Next
       
     EndIf
     
     
     
     ;--       Dessine la croix blanche
     If brush=0
       PosX=Int(MouseX()/32)*32
       PosY=Int(MouseY()/32)*32
       If PosX > SizeCarteX*32-32 : PosX = SizeCarteX*32-32: EndIf
       If PosY > SizeCarteY*32-32 : PosY = SizeCarteY*32-32: EndIf
       DisplaySprite3D(2,PosX-7,PosY-7)
     EndIf
   EndIf
   
   
   
EndIf





   If PageState= 0
     AfficheTextcentre3D("F2 = Carte",10,255)
   If Brush=0:   AfficheTextcentre3D("Select Brush with left Button",90,255) : EndIf
   If Brush=2:   AfficheTextcentre3D("Space = New Brush",90,255) : EndIf
   If Brush=0:   AfficheTextcentre3D("Press Up, Down To Move Picture",110,255) : EndIf
     
   EndIf
   
   
   If PageState= 1
     AfficheTextcentre3D("F1 = Tuiles",10,255)
   If Brush=0:   AfficheTextcentre3D("Select Brush with left Button",90,255) : EndIf
   If Brush=2:   AfficheTextcentre3D("Space = New Brush",90,255) : EndIf
   If Brush=2:   AfficheTextcentre3D("Insert Brush with left Button",110,255) : EndIf
   
   EndIf
   
   
  Stop3D()
  EndIf

    FlipBuffers()

   
Until KeyboardPushed(#PB_Key_Escape)
 
End     

_________________
Only PureBasic makes it possible


Dernière édition par Cool Dji le Mer 08/Juin/2011 21:35, édité 1 fois.

Haut
 Profil  
 
 Sujet du message: Re: Map Editor 2D
MessagePosté: Mer 08/Juin/2011 13:09 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 05/Sep/2008 11:42
Messages: 883
Localisation: Besançon
Hop,

Un tout petit pas de plus :
Up & Down pour déplacer la page des tuiles / Maj dans code précédent.

_________________
Only PureBasic makes it possible


Haut
 Profil  
 
 Sujet du message: Re: Map Editor 2D
MessagePosté: Mer 08/Juin/2011 13:39 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 5223
J'ai pas encore installé la beta de la 4.60...

_________________
.: Ar-S :. - Windows 8 x64 - Radeon HD 7870 - PB 5.11
LDV MULTIMEDIA : Assistance informatique Isère (38) Oyeu
PURE BASIC forum non officiel : Forum PB


Haut
 Profil  
 
 Sujet du message: Re: Map Editor 2D
MessagePosté: Mer 08/Juin/2011 13:45 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 05/Sep/2008 11:42
Messages: 883
Localisation: Besançon
Ar-S a écrit:
J'ai pas encore installé la beta de la 4.60...

Rhoooooooooo :D

_________________
Only PureBasic makes it possible


Haut
 Profil  
 
 Sujet du message: Re: Map Editor 2D
MessagePosté: Mer 08/Juin/2011 21:37 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 05/Sep/2008 11:42
Messages: 883
Localisation: Besançon
Hop,

Encore un tout petit pas de plus :
Right & Left pour déplacer la page des tuiles / Maj dans code précédent.

_________________
Only PureBasic makes it possible


Haut
 Profil  
 
 Sujet du message: Re: Map Editor 2D
MessagePosté: Mer 08/Juin/2011 21:41 
Hors ligne

Inscription: Dim 10/Jan/2010 5:29
Messages: 2134
Dur dur l'interface :D
pas évident à prendre en main.


Haut
 Profil  
 
 Sujet du message: Re: Map Editor 2D
MessagePosté: Mer 08/Juin/2011 21:54 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 05/Sep/2008 11:42
Messages: 883
Localisation: Besançon
ouaip, je vais diminuer le nombre de touches à utiliser.
Déjà, je vais virer les touches up left down right et faire les déplacements en fonction du déplacement de la souris sur les bords.
Après le passage de l'écran de tuiles à la carte avec F1 et F2, c'est peut être un peu chiant.

Je me rends pas bien compte, j'ai l'habitude de cette interface :mrgreen:

_________________
Only PureBasic makes it possible


Haut
 Profil  
 
 Sujet du message: Re: Map Editor 2D
MessagePosté: Mer 08/Juin/2011 22:29 
Hors ligne

Inscription: Dim 10/Jan/2010 5:29
Messages: 2134
tu devrais te créer une mini-gui dans un premier temps qui corresponds à tes besoins , une gui que tu pourrais réutilisé dans un autre projet bien sur.
une fois que tu as l'outil de base , tu peut faire des outils plus évolué , cromagnon n'a pas fait de fusil tout de suite , mais des lances en bois et en silex :D


Haut
 Profil  
 
 Sujet du message: Re: Map Editor 2D
MessagePosté: Jeu 09/Juin/2011 8:40 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 05/Sep/2008 11:42
Messages: 883
Localisation: Besançon
Vi, c'est un peu l'idée...
Merci du conseil, je fais réflechir sur une extra-mini-GUI avec mon ami Google :D

_________________
Only PureBasic makes it possible


Haut
 Profil  
 
 Sujet du message: Re: Map Editor 2D
MessagePosté: Jeu 09/Juin/2011 12:40 
Hors ligne

Inscription: Dim 10/Jan/2010 5:29
Messages: 2134
pas besoin de google.

tu devrais partir avec une structure standard que tu n'utiliseras jamais directement , je m'explique :

Code:
Structure guiGadget
  Position.vecteur2
  Taille.vecteur2
  Evenement.w
  *DrawCallBack.i
  *EventCallBack.i
EndStructure


Avec cette structure , tu créer toute les fonctions pour remplir les champs :

Code:
SetGadgetPosition(*Gadget.guiGadget, x.f , y.f )
etc...


et une fonction de rendu qui servira pour tout les gadgets que tu vas créer :

Code:
Procedure DrawGadget(*Gadget.guiGadget)
CallCFunctionFast(DrawCallBack)
EndProcedure





une fois ta structure fonctionnel , code le premier gadget , par exemple un Bouton :

Code:
Structure ButtonGadget Extends guiGadget
  Toggle.b
EndStructure


avec les fonctions qui vont bien pour la création et le rendu du bouton :

Code:
Procedure DessineBoutton()
DrawCeQueTuVeut(bouton,....)
endProcedure

Procedure EvenementBouton()
If souris click & souris dans le bouton // pseudo code...
  toggle = 1
endif
endprocedure

Procedure CreateBouton(x,y)

*Boutton.ButtonGadget = allocatememory(sizeof(ButtonGadget))
*Boutton\DrawCallBack = @DessineBoutton()
*Boutton\EventCallBack = @EvenementBouton()
etc...
endprocedure


Ton bouton dépends donc de guiGadget.
tu peut faire le rendu de cette manière :
Code:
MonBouton =  CreateBouton(10,10,...)

DrawGadget(@MonBouton)



Ensuite tu peut avoir une liste qui répertories tout les gadgets existant , tu les ajoutes dans la liste à leur création :

Citation:
Procedure CreateBouton(x,y)

*Boutton.ButtonGadget = allocatememory(sizeof(ButtonGadget))
*Boutton\DrawCallBack = @DessineBoutton()
*Boutton\EventCallBack = @EvenementBouton()

AddElement(MALISTEDEGADGET())
MALISTEDEGADGET() = *Boutton

endprocedure



et avec cette liste , tu appelles à intervalles régulière la procédure qui gère les événements de chaque gadget , chaque evenement part dans une pile , que tu vide au fur & à mesure que tu consultes les évenement survenu via une fct de ce genre : guiGetEvent()


@++


Haut
 Profil  
 
 Sujet du message: Re: Map Editor 2D
MessagePosté: Jeu 09/Juin/2011 16:38 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 21/Mai/2005 17:50
Messages: 892
[digression sur les GUI]
C'est super interressant ça G-rom :D , ça m'a éclaircit rapidement et sans trop de soucis mes idées sur les GUI.
Par contre y a un truc sur lequel j'ai buté :

CallCFunctionFast : tu l'utilise pour appeler une fonction écrite en pb, dans le même code ? c'est ça ? je ne savais pas que c'étais possible ^^, j'aurais plutôt utilisé les Interfaces.

G-Rom a écrit:
et une fonction de rendu qui servira pour tout les gadgets que tu vas créer :

Code:
Procedure DrawGadget(*Gadget.guiGadget)
CallCFunctionFast(DrawCallBack)
EndProcedure

_________________
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))


Haut
 Profil  
 
 Sujet du message: Re: Map Editor 2D
MessagePosté: Jeu 09/Juin/2011 16:45 
Hors ligne

Inscription: Dim 10/Jan/2010 5:29
Messages: 2134
je fait un petit zip avec des bases solides pour une gui , tu vas comprendre.
attends un peu je suis dessus. ;)


Haut
 Profil  
 
 Sujet du message: Re: Map Editor 2D
MessagePosté: Jeu 09/Juin/2011 17:27 
Hors ligne

Inscription: Dim 10/Jan/2010 5:29
Messages: 2134
Voila le petit zip : http://code.google.com/p/purebasic-gui/downloads/list
Il contient 4 fichiers :
    guiGadget.pbi
    guiSystem.pbi
    guiButtonGadget.pbi
    MonProgramme.pb

guiGadget.pbi
Contient la structure de base commune à tout les gadgets ainsi que les fonctions de base communes à tout les gadgets.

guiSystem.pbi
C'est un peu le fichier central de la gui , il s'occupe de rendre tout les gadgets à l'écran , gère les événements.

guiButtonGadget.pbi
Exemple basic d'un simple bouton à 2 états , on/off

MonProgramme.pb
Exemple d'utilisation de la GUI.

A vous de l'améliorer maintenant, vous avez des fondations solides ;)


Haut
 Profil  
 
 Sujet du message: Re: Map Editor 2D
MessagePosté: Jeu 09/Juin/2011 20:38 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 05/Sep/2008 11:42
Messages: 883
Localisation: Besançon
Effectivement, on passe au niveau supérieur avec ce genre de structure.
Merci G-Rom !

Juste un soucis, ça compile pas, bloque sur le _EventButtonGadget (Invalid Memory Access), je regarde ya peut être un pb de syntaxe qui traine...

_________________
Only PureBasic makes it possible


Haut
 Profil  
 
 Sujet du message: Re: Map Editor 2D
MessagePosté: Jeu 09/Juin/2011 20:53 
Hors ligne

Inscription: Dim 10/Jan/2010 5:29
Messages: 2134
_EventGuiGadget() tu veut dire ?
sa plante sur cette ligne : CallCFunctionFast(*gadget\mEventCallBack,*gadget) ?

ici ca marche bien :/ , essaye avec CallFunctionFast au lieu de CallCFunctionFast


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 23 messages ]  Aller à la page 1, 2  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye