Un jeu de plateau

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
SPH
Messages : 4949
Inscription : mer. 09/nov./2005 9:53

Un jeu de plateau

Message par SPH »

Salut,

j'avais dans l'idee de faire un jeu de plateau et je me disais que les murs et le sol serait facile a faire. Mais c'est plus compliqué que ce que je croyais.
Quelqu'un a t'il un code tout pret pour ca ?
Image
Image
Image

Code : Tout sélectionner

If InitSprite() And InitMouse() And InitKeyboard()
Else
MessageRequester("Erreur", "InitSprite() And InitMouse() And InitKeyboard() And InitSound() : impossible")
End 
EndIf


scr_w=1280
scr_h=1024
;scr_w=1366
;scr_h=768
If OpenScreen(scr_w,scr_h,32,"") 
Else
scr_w=1280
scr_h=960
If OpenScreen(scr_w,scr_h,32,"") 
Else
scr_w=1280
scr_h=800
If OpenScreen(scr_w,scr_h,32,"") 
Else
scr_w=1280
scr_h=768
If OpenScreen(scr_w,scr_h,32,"") 
Else
scr_w=1280
scr_h=720
If OpenScreen(scr_w,scr_h,32,"") 
Else
scr_w=1024
scr_h=768
If OpenScreen(scr_w,scr_h,32,"") 
Else
scr_w=1024
scr_h=600
If OpenScreen(scr_w,scr_h,32,"") 
Else
MessageRequester("Erreur", "OpenScreen impossible")
End
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf


LoadSprite(0,"d:/tmp/0.bmp")
LoadSprite(1,"d:/tmp/1.bmp")
LoadSprite(2,"d:/tmp/2.bmp")

Dim p(39,31)
For u=0 To 31
  For i=0 To 39
    Read.l x
    p(i,u)=x
  Next
Next

Dim saut(20)
For i=0 To 20
    Read.l x
    saut(i)=x
Next


xx=500
yy=220
up=-1

Repeat
  ClearScreen(0)
  
For u=0 To 31
  For i=0 To 39
    DisplaySprite(p(i,u),i*32,u*32)
  Next
Next
DisplayTransparentSprite(0,xx,yy)
x1=(xx+10)/32
x2=(xx+54)/32
y1=(yy)/32
y2=(yy+57)/32

If p(x1,y2)=1 And p(x2,y2)=1
  yy+1
EndIf


  StartDrawing(ScreenOutput()) 
  DrawText(0,0,"x1 : "+Str(x1)+"  x2 : "+Str(x2), RGB(255,255,25),0)
  DrawText(0,16,"y1 : "+Str(y1)+"  y2 : "+Str(y2), RGB(255,255,25),0)
  StopDrawing() 


ExamineKeyboard() 

If KeyboardPushed(#PB_Key_Left) And p(x1,y1)=1
      xx-5
EndIf
  
    If KeyboardPushed(#PB_Key_Right) And p(x2,y1)=1
      xx+5
    EndIf
  
    If KeyboardPushed(#PB_Key_Up)
      yy-5
    EndIf
  
  
    If KeyboardPushed(#PB_Key_Down)
      ;yy+5
    EndIf

  FlipBuffers();-FlipBuffers()

Until KeyboardPushed(#PB_Key_Escape) 

DataSection
Data.l 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1  
Data.l 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1  
Data.l 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1  
Data.l 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1  
Data.l 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1  
Data.l 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1  
Data.l 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1  
Data.l 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1  
Data.l 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1  
Data.l 1,1,1,1,1,1,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1  
Data.l 1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1  
Data.l 1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1  
Data.l 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1  
Data.l 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1  
Data.l 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1  
Data.l 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1  
Data.l 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1  
Data.l 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1  
Data.l 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1  
Data.l 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,1,1,1,1  
Data.l 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1  
Data.l 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1  
Data.l 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1  
Data.l 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1  
Data.l 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1  
Data.l 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1  
Data.l 1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1  
Data.l 1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1  
Data.l 1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1  
Data.l 1,1,1,1,1,1,1,1,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1  
Data.l 1,1,1,1,1,1,1,1,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1  
Data.l 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2  

Data.l -10,-10,-10,-9,-9,-8,-7,-6,-4,-1,0,-1,-4,-6,-7,-8,-9,-9,-10,-10,-10
EndDataSection

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Re: Un jeu de plateau

Message par flaith »

Dernière modification par flaith le mer. 20/avr./2011 18:33, modifié 1 fois.
Avatar de l’utilisateur
SPH
Messages : 4949
Inscription : mer. 09/nov./2005 9:53

Re: Un jeu de plateau

Message par SPH »

Je vais regarder si ca m'aidera mais je ne crois pas.
Penses tu que je devrais faire une detection de sprites pour voir les murs et le sol ?

ps : ton jeu existe deja en 3D : http://www.clubic.com/telecharger-fiche10981-fire.html

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
SPH
Messages : 4949
Inscription : mer. 09/nov./2005 9:53

Re: Un jeu de plateau

Message par SPH »

Ha, j'en reviens pas comme c'est dur !

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Re: Un jeu de plateau

Message par Fig »

Un jeu de plateau, cela ne parait pas si dur que cela...
Explique nous ce qui te pose problème exactement ?? :|
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Geo Trouvpatou
Messages : 471
Inscription : dim. 23/déc./2007 18:10

Re: Un jeu de plateau

Message par Geo Trouvpatou »

Salut.

J'ai fait ça il y a plus d'1 an et demi, c'était une reprise de LadyBug mis à ma sauce.
Je devais le poster sur le forum, pour savoir pourquoi les vitesses étaient différentes sous Windows et Linux.

J'imagine que ton problème c'est que l'on rentre dans les murs une fois que le perso tombe.
Je sais pas si ça t'aidera.
Le principe est de tester la case suivante par rapport à la direction de ton perso pour savoir si mur ou autre.

Code : Tout sélectionner

DisableDebugger
EnableExplicit

;--------------------------------------------------------------------------------------------
;- Enumeration
;--------------------------------------------------------------------------------------------
Enumeration
      #Mur_01 = 1
      #Mur_02 = 2
      #Sol_nu  = 3
      #Sol_piece_or = 4
      
      #Joueur = 80
      ;#Souris = 100
EndEnumeration


;-------------------------------------------------------------------------------------------
;- Constantes
;-------------------------------------------------------------------------------------------
;Définition de l'écran
#LARGEUR_ECRAN         = 640;1024
#HAUTEUR_ECRAN        = 480;768;480
#PROFONDEUR_ECRAN = 32 

#TOUCHE_GAUCHE = 1
#TOUCHE_DROITE   = 2
#TOUCHE_HAUT      = 3
#TOUCHE_BAS         = 4

;--------------------------------------------------------------------------------------------
;- Initialisation des différentes bibliothèques
;--------------------------------------------------------------------------------------------
; > Sprite()
; > Keyboard()
; > Mouse()
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
      MessageRequester( "Erreur" , "Impossible d'initialiser DirectX 7 Ou plus" , 0)
      End
EndIf


; > Sound()
If InitSound() = 0
      MessageRequester("Erreur", "Impossible d'initialiser DirectX 7 Ou il n'y à pas de carte son.", 0)
      End
EndIf


;--------------------------------------------------------------------------------------------
;- Declares
;--------------------------------------------------------------------------------------------
Declare ChargeCarte()
Declare AfficherCarte()
Declare InformationsDeboguage(x, y)
Declare passageSurItem()  
;-------------------------------------------------------------------------------------------
;- Structures
;-------------------------------------------------------------------------------------------
; Structures du joueur.
Structure sPersonnage                            
      X.i                                   ; Position en X du sprite
      Y.i                                   ; Position en Y du sprite
      ;      CoordonneeX_DuTableau.i       ; Position en X du sprite dans le tableau.
      ;      CoordonneeY_DuTableau.i       ; Position en X du sprite dans le tableau.
      ;     Orientation.i                      ; Direction de l'animation , haut droite bas ou gauche
      PasX.i                              ; Vitesse déplacement en X
      PasY.i                              ; Vitesse déplacement en Y
      ;     
      ;     
      ;     ; lpx.w                                               ;x position of Lady  OK
      ;     ; lpy.w                                               ;y position of Lady  OK
      ;     lpxpos.w                                            ;x position in the lookup table
      ;     lpypos.w                                            ;y position in the lookup table
      ;     ; ldir.w                                              ;direction Lady is moving  OK
      ;     lmove.w                                             ;counter for movement to next tile
      ;     ; lx.w                                                ;x speed of Lady  OK
      ;     ; ly.w                                                ;y speed of Lady  OK
EndStructure


;Définition des tuiles (Tuiles représentant : Mur, sol etc... faisant 32x32 pixels)
Structure sSprite
      ; 	No.i                  ; Numéro de la tuile sélectionnée 
      ; 	Nb.i                  ; Nombre de tuiles (Tiles) ???????????????????????????????? INUTILE
      TailleX.i             ; Dimension en largeur d'une tuile
      TailleY.i             ; Dimension en hauteur d'une tuile
      ;     DebutEnX.i         ; Position de départ en X pour l'affichage des tuiles ???????????????????????????????? INUTILE
      ;     DebutEnY.i         ; Position de départ en Y pour l'affichage des tuiles ???????????????????????????????? INUTILE
      ; 	MaxiX.i              ; Position de fin en X pour l'affichage des tuiles
      ; 	MaxiY.i              ; Position de fin en Y pour l'affichage des tuiles  
      ; 	CadreX1.i           ; Coordonnée en X du cadre de sélection  ???????????????????????????????? INUTILE
      ; 	CadreY1.i           ; Coordonnée en Y du cadre de sélection   ???????????????????????????????? INUTILE
EndStructure  


;Définitions de la map (La map de LadyBug fait 13 cases horizontale et 12 cases verticales)  
Structure sCarte
      TailleX.i             ; Nombre de sprites en X
      TailleY.i             ; Nombre de sprites en Y
      DebutEnX.i         ; Position de départ en X pour l'affichage de la map
      DebutEnY.i         ; Position de départ en Y pour l'affichage de la map
      CoordonneeX_DuTableau.i       ; Position en X du sprite dans le tableau.
      CoordonneeY_DuTableau.i       ; Position en X du sprite dans le tableau.
      ; 	MaxiX.i               ; Position de fin en X pour l'affichage de la map
      ; 	MaxiY.i               ; Position de fin en Y pour l'affichage de la map
EndStructure


;--------------------------------------------------------------------------------------------
;- Initialisation des variables.
;--------------------------------------------------------------------------------------------
Global Carte.sCarte  ; Variable qui va permettre de définir différentes données liées à notre carte.
Global Sprite.sSprite ; Variable qui va permettre de définir différentes données liées à nos sprites.


;/ Dimension de la carte
Carte\TailleX    = 12 ; Nombre de sprites horizontaux                                          
Carte\TailleY    = 13 ; Nombre de sprites verticaux

; Tableau qui va contenir les numéros correspondants à nos tuiles (1 pour Mur, 3 pour sol vide etc...). On a 13 cases horizontale et 12 cases verticale, donc TableauCarte(13, 12)
Global Dim TableauCarte(Carte\TailleX, Carte\TailleY) 

; Coordonnées haut gauche du départ de la Carte                                             
Carte\DebutEnX      = 32 ; Ici on va afficher la 1ère tuile (Mur extérieur) à 32 pixels en x                                              
Carte\DebutEnY      = 32 ; Ici on va afficher la 1ère tuile à 32 pixels en y  

; Carte\MaxiX      = Carte\debutEnX + Carte\TailleX * sprite\TailleX       
; Carte\MaxiY      = Carte\debutEnY + Carte\TailleY * sprite\TailleY


;/ Initialisation des variables
Sprite\TailleX = 32  ; Dimension en largeur d'une image (sprite) est de 32 pixels.
Sprite\TailleY = 32  ; Dimension en hauteur d'une image (sprite) est de 32 pixels.   


;- Joueur : RedBoule
Global Joueur.sPersonnage

; Pour positionner le joueur en étant sûr que cela ne posera pas de problèmes
; si l'on modifie le début d'affichage de la carte en x et y, on dit que la position du joueur est :
; Carte\debutEnX (Coordonnées haut gauche du départ de la map) + Sprite\TailleX (largeur de la tuile de notre joueur "RedBoule") 
; correspondant au mur qui englobe la carte.

Joueur\X = Carte\debutEnX + Sprite\TailleX ; position en x du Joueur au départ sur l'écran.
Joueur\Y = Carte\debutEnY + Sprite\TailleY ; position en y du Joueur au départ sur l'écran.

; Vitesse du joueur
Joueur\PasX = 2
Joueur\PasY = 2



; Cela permet de savoir quel iD de texture se trouve sous le joueur : TableauCarte(Carte\CoordonneeX_DuTableau, Carte\CoordonneeY_DuTableau)
Carte\CoordonneeX_DuTableau = 1 ; Ou 1 ; position en x du Joueur au départ sur l'écran.
Carte\CoordonneeY_DuTableau = 1 ; Ou 1 ; position en y du Joueur au départ sur l'écran.
; Debug Joueur\X
; Debug Joueur\Y

Global quit.b, toucheEnfoncee.b, traverserCase.b = 0, quelCas$




;--------------------------------------------------------------------------------------------
;- Ouverture de l'écran.
;--------------------------------------------------------------------------------------------
; Si l'ouverture de l'écran réussi, on charge les sprites utiles au jeu.
If OpenScreen(#LARGEUR_ECRAN, #HAUTEUR_ECRAN, #PROFONDEUR_ECRAN, "Jeu")             
      ;/ Chargement de tous les sprites
      
      ; Joueur
      CreateSprite(#Joueur, 32, 32)
      StartDrawing(SpriteOutput(#Joueur))
      Circle(16, 16, 8, RGB(255, 0, 0)) 
      StopDrawing()  
      
      ; Mur
      CreateSprite(#Mur_01, 32, 32)
      StartDrawing(SpriteOutput(#Mur_01))
      Box(0, 0, 32, 32, RGB(255, 255, 255))
      Box(1, 1, 30, 30, RGB(112,77,69))
      StopDrawing()
      
      
      ; Sol sans rien
      CreateSprite(#Sol_nu, 32, 32)
      StartDrawing(SpriteOutput(#Sol_nu))
      Box(0, 0, 32, 32, RGB(0,115,0)) 
      StopDrawing()
      
      
      ; Sol avec pièce d'or
      CreateSprite(#Sol_piece_or, 32, 32)
      StartDrawing(SpriteOutput(#Sol_piece_or))
      Box(0, 0, 32, 32, RGB(0,115,0)) 
      Circle(16, 16, 5, RGB(255, 255, 0))
      StopDrawing()

      
      ; On charge la carte.
      ChargeCarte()
Else
      MessageRequester("Erreur","Impossible d'ouvrir l'écran", 0)
      End
EndIf


;--------------------------------------------------------------------------------------------
;- LOOP : Boucle principale.
;--------------------------------------------------------------------------------------------
KeyboardMode(#PB_Keyboard_International)
;AfficherCarte()
;InformationsDeboguage(10, #HAUTEUR_ECRAN - 82)
Repeat   
      
      ;Efface l'écran courant avec la couleur specifiée. 
      ; A l'ouverture de l'écran graphique, on atterit donc sur un écran noir.
      ClearScreen(RGB(0, 0, 0))
      
      
      ExamineKeyboard() ; Permet d'utiliser les fonctions liées au clavier
      ;ExamineMouse() ; Permet d'utiliser les fonctions lié à la souris    
      
      
      ; [3] Affichage la carte
      ;ChargeMap()
      AfficherCarte()
      
      ; On affiche le joueur sur la carte
      DisplayTransparentSprite(#Joueur, Joueur\X, Joueur\Y)
      
      ; On affiche le debugger
       InformationsDeboguage(10, #HAUTEUR_ECRAN - 82)  ; <==== == Mettre ou Virer ça sous Linux, modifie le comportement du jeu.
      
      
      
      ; DEPLACEMENT BASIQUE
      ; Si l'on appuie sur une touche, on dit laquelle.
      If KeyboardPushed(#PB_Key_Left)   : toucheEnfoncee = #TOUCHE_GAUCHE : EndIf    
      If KeyboardPushed(#PB_Key_Right)  : toucheEnfoncee = #TOUCHE_DROITE : EndIf
      If KeyboardPushed(#PB_Key_Up)     : toucheEnfoncee = #TOUCHE_HAUT    : EndIf
      If KeyboardPushed(#PB_Key_Down) : toucheEnfoncee = #TOUCHE_BAS      : EndIf   
      If KeyboardPushed(#PB_Key_Escape) 
            quit = 1
      EndIf
      
      ; Quelle touche a été enfoncée ?
      Select toucheEnfoncee
                  
                  ; Si touche GAUCHE
            Case #TOUCHE_GAUCHE 
                  If traverserCase = 0 And TableauCarte(Carte\CoordonneeX_DuTableau - 1, Carte\CoordonneeY_DuTableau) <> #Mur_01 ; ou #Mur_01
                        ;Debug TableauCarte(Carte\CoordonneeX_DuTableau - 1, Carte\CoordonneeY_DuTableau)
                        Carte\CoordonneeX_DuTableau = Carte\CoordonneeX_DuTableau - 1
                        
                        ; Pour ne plus re-rentrer dans la condition tant que la case n'a pas été traversée en entière on donne la valeur (Sa largeur) de celle-ci.
                        traverserCase = Sprite\TailleX ; ou 32px
                        
                        ; Vitesse du joueur
                        Joueur\PasX = -2
                        Joueur\PasY = 0
                        
                        quelCas$ = "x" 
                        ;passageSurItem()  
                  EndIf
                  
                  ; Si touche DROITE
            Case #TOUCHE_DROITE 
                  
                  ; INFO : Au départ Carte\CoordonneeX_DuTableau et Carte\CoordonneeY_DuTableau valent 0
                  ; Donc TableauCarte(0, 0) vaut 1 (Donc un mur) et du coup on ne peut pas bouger
                  ; Si pas mur alors on peut avancer.
                  ;If TableauCarte(x, y) <> 1 ; ou #Mur_01
                  If traverserCase = 0 And TableauCarte(Carte\CoordonneeX_DuTableau + 1, Carte\CoordonneeY_DuTableau) <> #Mur_01 ; ou #Mur_01
                        
                        ; On vérifie l'id de notre case en cours et on regarde ce qu'indique le deboggueur.
                        ; On se place vers la droite donc on vérifie a quoi correspond la case sur notre droite pour voir si ce n'est pas un mur.
                        Carte\CoordonneeX_DuTableau = Carte\CoordonneeX_DuTableau + 1
                        ;Joueur\X = Joueur\X + 1
                        
                        ; Pour ne plus re-rentrer dans la condition tant que la case n'a pas été traversée en entière on donne la valeur (Sa largeur) de celle-ci.
                        traverserCase = Sprite\TailleX ; ou 32px
                        
                        
                        ; Vitesse du joueur
                        Joueur\PasX = 2
                        Joueur\PasY = 0
                        
                        quelCas$ = "x"
                        ;passageSurItem() 
                  EndIf
                  
                  
                  ; Si touche HAUT
            Case #TOUCHE_HAUT 
                  If traverserCase = 0 And TableauCarte(Carte\CoordonneeX_DuTableau, Carte\CoordonneeY_DuTableau - 1) <> #Mur_01
                        
                        Carte\CoordonneeY_DuTableau = Carte\CoordonneeY_DuTableau - 1
                        traverserCase = Sprite\TailleY ; ou 32px
                        Joueur\PasX = 0
                        Joueur\PasY = -2
                        quelCas$ = "y"
                        ;passageSurItem() 
                  EndIf
                  
                  
                  ; Si touche BAS
            Case #TOUCHE_BAS 
                  ;Joueur\Y = Joueur\Y + 1
                  If traverserCase = 0 And TableauCarte(Carte\CoordonneeX_DuTableau, Carte\CoordonneeY_DuTableau + 1) <> #Mur_01
                        
                        Carte\CoordonneeY_DuTableau = Carte\CoordonneeY_DuTableau + 1
                        traverserCase = Sprite\TailleY ; ou 32px
                        Joueur\PasX = 0
                        Joueur\PasY = 2
                        quelCas$ = "y"
                        ;passageSurItem() 
                  EndIf
                  
      EndSelect         
      
      ; Si
      If traverserCase <> 0
            Joueur\X = Joueur\X + Joueur\PasX
            Joueur\Y = Joueur\Y + Joueur\PasY

            If quelCas$ = "x"
                  traverserCase = traverserCase - Abs(Joueur\PasX) ; Mettre la même valeur que le pas du joueur 
            Else
                  traverserCase = traverserCase - Abs(Joueur\PasY) ; Mettre la même valeur que le pas du joueur
            EndIf
            
            ; On va préciser d'effacer la piece en or uniquement quand on se trouve sur la moitié de celle-ci.
            If traverserCase < 16
            passageSurItem()
            EndIf
            
      EndIf 
      
      ;Delay(7)
      ;Inverse le buffer d'arrière plan avec le buffer visible à l'écran. 
      ;La partie invisible du buffer remplace alors complètement La partie visible. 
      FlipBuffers()  
      
;Until KeyboardPushed(#PB_Key_Escape)   
Until quit = 1


;--------------------------------------------------------------------------------------------
;- Procédures.
;--------------------------------------------------------------------------------------------
Procedure ChargeCarte()
      Protected x.i, y.i, debuger$
      
      Restore niveau1
      
      For y = 0 To Carte\TailleY - 1
            For x = 0 To Carte\TailleX - 1
                  Read.c TableauCarte(x, y)
                  debuger$ + Str(TableauCarte(x, y)) ; Sert au deboguage pour voir la map.
            Next x
            Debug debuger$ : debuger$ = "" ; Sert au deboguage pour voir la map.
      Next y
      
EndProcedure  


Procedure AfficherCarte()
      Protected x.i, y.i, tempTableauCarte
      
      ;DisplaySprite(15,0,0)                            ;draw background to clear the screen
      For y = 0 To Carte\TailleY - 1
            For x = 0 To Carte\TailleX - 1
                  
                  ; contient le numéro de la tuile (1 pour Mur, 3 pour sol vide etc...) aux coordonnées x = 0, y = 0 etc...
                  tempTableauCarte = TableauCarte(x, y)

                  DisplaySprite(tempTableauCarte, Carte\debutEnX + (x * Sprite\TailleX), Carte\debutEnY + (y * Sprite\TailleY))
                  
            Next
      Next
      
EndProcedure


Procedure InformationsDeboguage(x, y)
      
      If StartDrawing(ScreenOutput())
            
            DrawingMode(#PB_2DDrawing_Transparent)
            FrontColor(RGB(255,0,0)) 
            
            ; On ajoute 12 pour la coordonnée Y, pour que chaque lignes soient visibles.
            
            ; On afiche l'id de la tuile sélectionnée
            ;DrawText(x, y, "Tuile id : "+ Str(sprite\No))
            DrawText(x, y, "Tuile id : "+ Str(TableauCarte(Carte\CoordonneeX_DuTableau, Carte\CoordonneeY_DuTableau)))
            
            ; On affiche les coordonnées du joueur
            DrawText(x, y + 12, "Coord RedBoule X : "+ Str(Joueur\X))
            DrawText(x, y + 24, "Coord RedBoule Y : "+ Str(Joueur\Y))
            
            DrawText(x, y + 36, "Coord X du tableau : "+ Str(Carte\CoordonneeX_DuTableau))
            DrawText(x, y + 48, "Coord Y du tableau : "+ Str(Carte\CoordonneeY_DuTableau))
            
            DrawText(x, y + 60, "Stop : "+ Str(traverserCase))
            
            StopDrawing()
      EndIf   
EndProcedure


Procedure passageSurItem()                                    

    If TableauCarte(Carte\CoordonneeX_DuTableau, Carte\CoordonneeY_DuTableau) = #Sol_piece_or  ; Si la surface est une piece en or [4] quand on passe dessus on l'efface.
        
        TableauCarte(Carte\CoordonneeX_DuTableau, Carte\CoordonneeY_DuTableau) = #Sol_nu     ; La surface devient donc le sol nu [3].

    EndIf
    
EndProcedure


;--------------------------------------------------------------------------------------------
;- Datas.
;--------------------------------------------------------------------------------------------
DataSection                   
      niveau1:                                 
      Data.c 1,1,1,1,1,1,1,1,1,1,1,1        ; Ici TableauCarte(0, 0) correspond à 1
      Data.c 1,3,4,4,4,4,4,4,4,4,4,1        ; Ici TableauCarte(1, 1) correspond à 3
      Data.c 1,4,1,1,4,1,1,4,1,1,4,1        ; 1 = Mur1
      Data.c 1,4,1,4,4,4,4,4,4,1,4,1        
      Data.c 1,4,1,4,1,1,1,1,4,1,4,1        ; 3 = Sol sans piece en or
      Data.c 1,4,4,4,4,4,4,4,4,4,4,1        ; 4 = Sol avec piece en or
      Data.c 1,4,1,1,4,1,1,4,1,1,4,1
      Data.c 1,4,4,4,4,4,4,4,4,4,4,1
      Data.c 1,4,1,4,1,1,1,1,4,1,4,1
      Data.c 1,4,1,4,4,4,4,4,4,1,4,1
      Data.c 1,4,1,1,4,1,1,4,1,1,4,1
      Data.c 1,4,4,4,4,4,4,4,4,4,4,1
      Data.c 1,1,1,1,1,1,1,1,1,1,1,1
      Data.c 74                                   ; Nombre de piece en or à collecter.
EndDataSection
Avatar de l’utilisateur
venom
Messages : 3138
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Un jeu de plateau

Message par venom »

Ton code fonctionne très bien chez moi SPH 8O

qu'est-ce qui te gène ?






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
SPH
Messages : 4949
Inscription : mer. 09/nov./2005 9:53

Re: Un jeu de plateau

Message par SPH »

venom a écrit :Ton code fonctionne très bien chez moi SPH 8O

qu'est-ce qui te gène ?
Et bien, je vois que vous ne voyez pas ce que je veux dire. Je vais preciser quelque chose qui va vous eclairer : mon jeu de plateau est vu de coté. Donc, le personnage doit se poser sur le sol. Il doit tomber quand on le deplace dans le vide. Et il doit sauter sans se prendre dans les murs. Et bin, mine de rien, c'est tres dur a coder !!!

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: Un jeu de plateau

Message par blendman »

tiens, j'ai retrouvé ce code de Beauregard, j'espère que je peux le poster, je ne trouve plus le lien :

Code : Tout sélectionner

; ------------------------------------------------------------
; droit dans le mur - 2007 - source purebasic 4. et des poussières
;
; Collision sans fonction.
;
; France - Toulouse - H. Philippe - pseudo: beauregard
; ------------------------------------------------------------

;UsePNGImageDecoder () ; oui, toi t'es obligatoire.

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

Enumeration ; ici, on donne un petit nom à nos sprites( non, chuis pas un numéro !):
; tout en sprites3D, même le décor (pourquoi s'embéter ?):
     #fondA
     #fondA3D
; dirigé par le joueur durand la phase de jeu:
     #champi ;
     #champi3D
; bloc solide:
     #blocs
     #blocs3D
   
; permet au progammeur de repèrer les positions des divers objets qu'il teste à l'écran:         
     #repere
     #repere3D         
EndEnumeration

;Global page.w=0,niveau.w=1
;Global placemX=512,placemY=384



; chamcoll-> =1 collision à droite, =2 collision à gauche.
Global champX.w, champY.w,chamcoll.w,champsol.w,champlafond.w
Global champsaut.w,champsautH.w,champsautV.w,champsautM.w

Global nbrebs

Structure balle
id.l
x.w
Y.w
sensx.l
sensy.l
sr.w
attract.w
EndStructure

Global NewList bs.balle(); bloc solide, c'est à dire infranchissable des 4 côtés.
Declare Fchampignon()
Declare Fcloneblocs()





; Si votre PC ne peut pas afficher une haute résoution résolution en 32bit, Alors arrêt du programme.

;If OpenScreen (1440, 900, 32, "droit dans le mur" )=0
If OpenScreen (1024, 768, 32, "droit dans le mur" )=0
     MessageRequester ( "Error" , "Can't open a 1024*768 - 32 bit screen !" , 0)
     End
EndIf


; fond:
CreateSprite ( #fondA ,64,64, #PB_Sprite_Texture )
StartDrawing ( SpriteOutput ( #fondA ))
  BackColor ( RGB (0,0,0))
   Box (0,0, 64, 64, RGB (8,8,120))

  LineXY (0, 0, 32, 0, RGB (88,8,88)) 
  LineXY (32, 0, 0, 32, RGB (88,8,88))
  LineXY (0, 32, 0, 0, RGB (88,8,88))

  LineXY (64, 63, 48, 63, RGB (88,8,88))
  LineXY (48, 63, 63, 48, RGB (88,8,88))
  LineXY (63, 48, 63, 63, RGB (88,8,88))
   
StopDrawing ()
CreateSprite3D ( #fondA3D , #fondA ) ; osons les amis, osons !




; °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
; champignon:
CreateSprite ( #champi ,64,64, #PB_Sprite_Texture ) ; objet dirigé par le joueur.
StartDrawing ( SpriteOutput ( #champi ))
  BackColor ( RGB (0,0,0))

  Box (0,0, 128, 128, RGB (255,255,255))
StopDrawing ()
CreateSprite3D ( #champi3D , #champi ) 

; decor blocsolide (objet intéractif car il fait office à la fois de mur, sol et plafond).
CreateSprite ( #blocs ,64,64, #PB_Sprite_Texture ) 
StartDrawing ( SpriteOutput ( #blocs ))
  BackColor ( RGB (0,0,0))
  Box (0,0, 4, 64, RGB (0,104,0))
  Box (4,0, 4, 64, RGB (16,152,16))
  Box (8,0, 12, 64, RGB (0,208,0))
  Box (20,0, 4, 64, RGB (152,248,168)) 
  Box (24,0, 4, 64, RGB (248,248,248))   
  Box (28,0, 4, 64, RGB (152,248,168))
  Box (32,0, 8, 64, RGB (80,232,80))
  Box (36,0, 4, 64, RGB (0,208,0))
  Box (40,0, 4, 64, RGB (16,152,16))
  Box (44,0, 12, 64, RGB (0,208,0))
  Box (56,0, 4, 64, RGB (16,152,16))
  Box (60,0, 4, 64, RGB (0,104,0))
StopDrawing ()
CreateSprite3D ( #blocs3D , #blocs )
     





; repere ( utilisé uniquement par le programmeur):
CreateSprite ( #repere ,4,4, #PB_Sprite_Texture )
StartDrawing ( SpriteOutput ( #repere ))
  BackColor ( RGB (0,0,0))
  Box (0,0, 4, 4, RGB (255,255,255))
StopDrawing ()
CreateSprite3D ( #repere3D , #repere )


Global zutA,zutB,zutC ; pour repère la variable qui n'aurait la bonne valeur.
;MouseLocate(449,62)
tpb=255
; ******************************************************************************************************
Repeat ; Boucle principale
; ******************************************************************************************************


ExamineMouse():ExamineKeyboard ()

If KeyboardPushed ( #PB_Key_Add ) And tpb<255:tpb+1:EndIf
If KeyboardPushed ( #PB_Key_Subtract ) And tpb>5:tpb-1:EndIf

       Start3D ()   

  For a=0 To 15 ; 1024/64=16
   For b=0 To 11 ; 768/64=12 
    DisplaySprite3D(#fondA3D, a*64, b*64, 255) ; 16*12
   Next
  Next   
   
   
   
   
; **********************************************************************************************
; fabrication bloc solide:
If nbrebs<1:nbrebs+1:Fcloneblocs():EndIf 

; Affichage clone bloc solide si existe:
ForEach bs()

  ; chamcoll -> =1 collision à droite, =2 collision à gauche.     
  If champX+64>bs()\x-1 And champX+64<bs()\x+16
   If (champY>bs()\y+15 And champY<bs()\y+49)
       chamcoll=1
   EndIf 
  EndIf
  If champX+64>bs()\x-1 And champX+64<bs()\x+16
   If (champY+16>bs()\y+15 And champY+16<bs()\y+49) Or (champY+48>bs()\y+15 And champY+48<bs()\y+49)
       chamcoll=1
   EndIf 
  EndIf
 
  If champX>bs()\x+48 And champX<bs()\x+65
   If (champY>bs()\y+15 And champY<bs()\y+49)     
       chamcoll=2
   EndIf 
  EndIf
  If champX>bs()\x+48 And champX<bs()\x+65
   If (champY+16>bs()\y+15 And champY+16<bs()\y+49) Or (champY+48>bs()\y+15 And champY+48<bs()\y+49)     
       chamcoll=2
   EndIf 
  EndIf
       
  ; champsol -> =1 collision avec la partie haute du bloc solide:
  If (champX+8>bs()\x+7 And champX+8<bs()\x+57) Or (champX+56>bs()\x+7 And champX+56<bs()\x+57)
   If (champY+64>bs()\y-1 And champY+64<bs()\y+16)   
       champsol=1:champY=(bs()\y-64)+1
   EndIf     
  EndIf     


  ; champlafond -> =1 collision avec le plafond
  If (champX+8>bs()\x+7 And champX+8<bs()\x+57) Or (champX+56>bs()\x+7 And champX+56<bs()\x+57)
   If champY>bs()\y+48 And champY<bs()\y+65   
       champlafond=1
   EndIf     
  EndIf



     
   DisplaySprite3D ( bs()\id , bs()\x, bs()\y, tpb) 

Next
 
 
 
 
 
 
; Contrôlé par le joueur:
If depart=0:depart=1:champX+512:champY+64:EndIf 

Fchampignon()
   
 
   
   
   
   
     Stop3D ()



; ligne de test afin de connaître la valeur des variables:   
StartDrawing ( ScreenOutput ())
DrawingMode (1)
FrontColor ( RGB (255,255,255))   
   
    chamcoll$= Str (chamcoll)   
    champsol$= Str (champsol)
    champlafond$= Str (champlafond)
   
    tpb$= Str (tpb)     
     
    zutB$= Str (zutB)
    zutC$= Str (zutC)   
    DrawText (50,1+20, "chamcoll: " +chamcoll$)
    DrawText (50,1+40, "champsol: " +champsol$)   
    DrawText (50,1+60, "champlafond: " +champlafond$)
   
    DrawText (50,1+100, "testX: " +testX$)
    DrawText (50,1+120, "testY: " +testY$)
   
    DrawText (50,1+260, "zutB: " +zutB$);:zutB=0
    DrawText (50,1+280, "zutC: " +zutC$);:zutC=0
           
    DrawText (350,20, "appuyez sur la touche R pour remise à 0 du code")
    DrawText (350,50, "appuyez sur la touche - ou + du pavé numérique ")
    DrawText (365,70, "niveau transparence des blocs solides: " +tpb$)
StopDrawing ()


Gosub fps ; nombre d'image par seconde.
   
If KeyboardPushed ( #PB_Key_R ):champX=0:champY=0:depart=0:tpb=255:EndIf ; reset
     
; °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
; remise à 0 des variables avertissant d'une collision:
    chamcoll=0:champsol=0:champlafond=0 
; °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
;FlipBuffers (60)
    FlipBuffers (): ClearScreen ( RGB (0,0,0))   
; ******************************************************************************************************     
Until KeyboardPushed ( #PB_Key_Escape ): End ; fin de la boucle principale (appuyez sur la touche Esc)
; ******************************************************************************************************   




fps:
If Val ( FormatDate ( "%ss" , Date ()))=sek ; regardez pas là, c'est trop compliqué. Arrêtez j'vous dis! Bon ben, je
     ; vous aurez prévenu...
    fps+1
Else
    FPS$= Str (fps)
    fps=0
EndIf
sek= Val ( FormatDate ( "%ss" , Date ()))

StartDrawing ( ScreenOutput ())
DrawingMode (1)
FrontColor ( RGB (255,255,255))
DrawText (1,1, "FPS: " +FPS$)



StopDrawing ()
Return

; ***********************************************************************************************
; ********************************* ici commence les procedures *********************************
; ***********************************************************************************************
Procedure Fcloneblocs() ; 64*64 fabrication clone bloc solide:

; placement clone bloc solide:

; faisons le sol:
For a=0 To 15
         LastElement(bs())
         AddElement(bs())
         bs()\id=#blocs3D         

  bs()\x=a*64:bs()\y=704
Next

; faisons 2 autres blocs ( mur):
LastElement(bs()):AddElement(bs())
  bs()\id=#blocs3D:bs()\x=0:bs()\y=640
LastElement(bs()):AddElement(bs())
  bs()\id=#blocs3D:bs()\x=1024-64:bs()\y=640

; faisons un 1er plafond:
For a=0 To 3
         LastElement(bs())
         AddElement(bs())
         bs()\id=#blocs3D         

  bs()\x=a*64:bs()\y=512
Next
; faisons un 2eme plafond:
For a=0 To 2
         LastElement(bs())
         AddElement(bs())
         bs()\id=#blocs3D         

  bs()\x=(a*64)+192:bs()\y=320
Next
; faisons un 3eme plafond:
For a=0 To 1
         LastElement(bs())
         AddElement(bs())
         bs()\id=#blocs3D         

  bs()\x=(a*64)+640:bs()\y=192
Next
 
; et faisont mumuse avec d'autres constructions...
LastElement(bs()):AddElement(bs())
  bs()\id=#blocs3D:bs()\x=448:bs()\y=640   
LastElement(bs()):AddElement(bs())
  bs()\id=#blocs3D:bs()\x=512:bs()\y=640
LastElement(bs()):AddElement(bs())
  bs()\id=#blocs3D:bs()\x=448:bs()\y=576
 
EndProcedure

Procedure Fchampignon() ; 64*64

; chamcoll-> =1 collision à droite, =2 collision à gauche.

If KeyboardPushed ( #PB_Key_Right ) And chamcoll<>1
   champX+6
   If champX>1024-64:champX-6:EndIf
EndIf
If KeyboardPushed ( #PB_Key_Left ) And chamcoll<>2
   champX-6
   If champX<0:champX+6:EndIf
EndIf

If KeyboardPushed ( #PB_Key_Up ) And champsol=1 And champsaut=0:champsaut=1:EndIf

If champsaut=1



   If champsautH<15 ;H comme hauteur du saut
     champsautV=12:champsautH+1
   EndIf
   If champsautH+champsautM>14 And champsautH+champsautM<25 ; M comme modulable
     champsautV=10:champsautM+1
   EndIf
   If champsautH+champsautM>24 And champsautH+champsautM<35
     champsautV=8:champsautM+1
   EndIf

   champY=champY-champsautV; V comme vitesse de la montée lors du saut.

; si (joueur lache touche haut ET saut minimum effectué) OU hauteur saut maximal atteind, alors...
   If (KeyboardPushed ( #PB_Key_Up )=0 And champsautH>14)  Or champsautH+champsautM=35 Or champlafond=1
     champsautH=0:champsautM=0:champsaut=0
   EndIf
EndIf


If champsol=0 And champsaut=0 ;  si champignon ne touche plus le sol ET pas de saut, alors...
   champY+8
EndIf

    DisplaySprite3D ( #champi3D , champX, champY, 255)



EndProcedure 
je trouve que ça marche plutôt pas mal ;).
Avatar de l’utilisateur
SPH
Messages : 4949
Inscription : mer. 09/nov./2005 9:53

Re: Un jeu de plateau

Message par SPH »

En effet, ca marche tres tres bien !!

Merci, je vais essayer de le decortiquer :mrgreen:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
kelebrindae
Messages : 579
Inscription : ven. 11/mai/2007 15:21

Re: Un jeu de plateau

Message par kelebrindae »

Ah, si c'est un mario-like que tu veux, j'avais fait ça il y a quelques temps, si ça peut aider: http://www.purebasic.fr/english/viewtop ... 16&t=39508

Le code et tout le reste est dispo ici: http://keleb.free.fr/codecorner/downloa ... skull2.zip
Les idées sont le souvenir de choses qui ne se sont pas encore produites.
Avatar de l’utilisateur
SPH
Messages : 4949
Inscription : mer. 09/nov./2005 9:53

Re: Un jeu de plateau

Message par SPH »

kelebrindae a écrit :Ah, si c'est un mario-like que tu veux, j'avais fait ça il y a quelques temps, si ça peut aider: http://www.purebasic.fr/english/viewtop ... 16&t=39508

Le code et tout le reste est dispo ici: http://keleb.free.fr/codecorner/downloa ... skull2.zip
Bien aussi !! On n'a pas eu connaissance de ton jeu !

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Geo Trouvpatou
Messages : 471
Inscription : dim. 23/déc./2007 18:10

Re: Un jeu de plateau

Message par Geo Trouvpatou »

Zut mon post est passé inaperçu.
Avatar de l’utilisateur
SPH
Messages : 4949
Inscription : mer. 09/nov./2005 9:53

Re: Un jeu de plateau

Message par SPH »

Geo Trouvpatou a écrit :Zut mon post est passé inaperçu.
Je l'ai matté mais il ne correspond pas a un jeu de plateau genre mario :idea:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Re: Un jeu de plateau

Message par flaith »

Geo Trouvpatou a écrit :Zut mon post est passé inaperçu.
tiens ca m'arrive souvent, alors j'enlève et me donne moins envie d'en mettre :mrgreen:
Répondre