Page 1 sur 2

Mon Premier Code

Publié : ven. 10/déc./2004 23:44
par Torp
Salut,

Voici donc la première partie du programme que je suis entrain de faire. C'est un clone du jeu de JARNAC (pour ceux qui connaissent). Je le poste ici d'avoir les critiques sur ma programmation... Euh...débutante! :lol:

Bon c'est sur pour tester vous allez avoir du mal... car y a pas les images... mais faut imaginer... :roll:

Code : Tout sélectionner

;+-------------------------------------------------------------------
;PURE ARNAQUE
;par Torp
;Pure Basic 3.92
;+-------------------------------------------------------------------
;OpenConsole()
;+-------------------------------------------------------------------
;-Declaration des constantes
;+-------------------------------------------------------------------
#Valider=27:#ValidX=260:#ValidY=405:#BoutonX=55
#Annuler=28:#AnnulX=200:#AnnulY=405:#BoutonY=23
#Passer=29:#PassX=320:#PassY=405
#NlleLettre=30:#NLettreX=7:#NLettreY=57
#Ch3Lettres=31:#CLettreX=7:#CLettreY=101
#Pointeur=32
#Plateau=33
#Lock=34
#Llock=35
#Cache=36
#Cases=31
#BasePlateauX=101
#BasePlateauY=126
#BaseChevaletX=18
#BaseChevaletY=157
#LargeurPion=25
#PosJoueur2=408
;+-------------------------------------------------------------------
;-Declarations des Variables et affectations des valeurs
;+-------------------------------------------------------------------
Declare Jeu_Plateau(mouseX,mouseY)
Declare Jeu_Chevalet(mouseX,mouseY)
Declare Tirage(Nb)
Declare LachePion()
Declare ManipPlato(mouseX,mouseY)
Declare Valider(Mot)
Declare AnnulOuPass(Mot,Choix)
Declare Ranger()
Declare Ch3Lettres()
Declare Sablier()      
mouseX.l=400:mouseY.l=400
Global MotJoue.b,LettreJoue.b,Valider.b,Annuler.b,PassJ1.b,PassJ2.b,Ch3Lettres.b,NlleLettre.b,Tour.b,Joueur.b,PosJoueur2,Depart.b
Valider=#False:Annuler=#False:PassJ1=#True:PassJ2=#False:Ch3lettres=#False:NlleLettre=#False:Depart=#True:Joueur=0:PosJoueur2=0
i.b:j.b:x.b:y.b:Mots.b:Letter.b:Player.b ;Variables diverses
Installation$="C:\Documents and Settings\Torp\Mes documents\Le Jarnac"

;+-------------------------------------------------------------------
;-Initialisation de ecran du jeu
;+-------------------------------------------------------------------
If InitMouse()=0 Or InitSprite()=0 Or InitKeyboard()=0 Or InitSound()=0
  MessageRequester("Erreur","Impossible d'initialiser DirectX",0)
  End
EndIf

If OpenWindow(0,0,0,800,600,#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered|#PB_Window_TitleBar,"Le jarnac")=0
  MessageRequester("Erreur","Impossible d'afficher l'écran principal",0)
  End
EndIf

If OpenWindowedScreen(WindowID(),0,0,800,600,0,0,0)=0
  MessageRequester("Erreur","Impossible d'afficher l'écran principal",0)
  End
EndIf

;+-------------------------------------------------------------------
;-Structures et listes chainees et tableaux
;+-------------------------------------------------------------------
Structure Lettre
  Chemin.s
  Lettre.s
  Nombre.b
EndStructure

Structure Plateau
  CaseX.w
  CaseY.w
  ValRang.b
  Lettre.s
  PrevCase.b
  Lock.b
EndStructure

Structure Chevalet
  CaseX.w
  CaseY.w
  ValRang.b
  Lettre.s
  Change.b
EndStructure

Structure Fleche
  Curseur.b
  Lettre.s
  Unlock.b
  PrevCase.b
EndStructure

Structure Stock
  CaseX.w
  CaseY.w
  ValRang.b
  Lettre.s
EndStructure

NewList Curseurs.Fleche()
AddElement(Curseurs())
  Curseurs()\Curseur=#Pointeur
  Curseurs()\Lettre=""
  Curseurs()\Unlock=#True
  Curseurs()\PrevCase=#False
  
Dim Stockage.Stock(1,7,8)

Dim Lettres.Lettre(26)
  Lettres(1)\Chemin=Installation$+"\Data\A.png":Lettres(1)\Lettre="A":Lettres(1)\Nombre=13
  Lettres(2)\Chemin=Installation$+"\Data\B.png":Lettres(2)\Lettre="B":Lettres(2)\Nombre=3
  Lettres(3)\Chemin=Installation$+"\Data\C.png":Lettres(3)\Lettre="C":Lettres(3)\Nombre=5
  Lettres(4)\Chemin=Installation$+"\Data\D.png":Lettres(4)\Lettre="D":Lettres(4)\Nombre=6
  Lettres(5)\Chemin=Installation$+"\Data\E.png":Lettres(5)\Lettre="E":Lettres(5)\Nombre=18
  Lettres(6)\Chemin=Installation$+"\Data\F.png":Lettres(6)\Lettre="F":Lettres(6)\Nombre=2
  Lettres(7)\Chemin=Installation$+"\Data\G.png":Lettres(7)\Lettre="G":Lettres(7)\Nombre=4
  Lettres(8)\Chemin=Installation$+"\Data\H.png":Lettres(8)\Lettre="H":Lettres(8)\Nombre=2
  Lettres(9)\Chemin=Installation$+"\Data\I.png":Lettres(9)\Lettre="I":Lettres(9)\Nombre=10
  Lettres(10)\Chemin=Installation$+"\Data\J.png":Lettres(10)\Lettre="J":Lettres(10)\Nombre=1
  Lettres(11)\Chemin=Installation$+"\Data\K.png":Lettres(11)\Lettre="K":Lettres(11)\Nombre=1
  Lettres(12)\Chemin=Installation$+"\Data\L.png":Lettres(12)\Lettre="L":Lettres(12)\Nombre=5
  Lettres(13)\Chemin=Installation$+"\Data\M.png":Lettres(13)\Lettre="M":Lettres(13)\Nombre=5
  Lettres(14)\Chemin=Installation$+"\Data\N.png":Lettres(14)\Lettre="N":Lettres(14)\Nombre=11
  Lettres(15)\Chemin=Installation$+"\Data\O.png":Lettres(15)\Lettre="O":Lettres(15)\Nombre=8
  Lettres(16)\Chemin=Installation$+"\Data\P.png":Lettres(16)\Lettre="P":Lettres(16)\Nombre=4
  Lettres(17)\Chemin=Installation$+"\Data\Q.png":Lettres(17)\Lettre="Q":Lettres(17)\Nombre=2
  Lettres(18)\Chemin=Installation$+"\Data\R.png":Lettres(18)\Lettre="R":Lettres(18)\Nombre=10
  Lettres(19)\Chemin=Installation$+"\Data\S.png":Lettres(19)\Lettre="S":Lettres(19)\Nombre=8
  Lettres(20)\Chemin=Installation$+"\Data\T.png":Lettres(20)\Lettre="T":Lettres(20)\Nombre=11
  Lettres(21)\Chemin=Installation$+"\Data\U.png":Lettres(21)\Lettre="U":Lettres(21)\Nombre=7
  Lettres(22)\Chemin=Installation$+"\Data\V.png":Lettres(22)\Lettre="V":Lettres(22)\Nombre=2
  Lettres(23)\Chemin=Installation$+"\Data\W.png":Lettres(23)\Lettre="W":Lettres(23)\Nombre=1
  Lettres(24)\Chemin=Installation$+"\Data\X.png":Lettres(24)\Lettre="X":Lettres(24)\Nombre=1
  Lettres(25)\Chemin=Installation$+"\Data\Y.png":Lettres(25)\Lettre="Y":Lettres(25)\Nombre=2
  Lettres(26)\Chemin=Installation$+"\Data\Z.png":Lettres(26)\Lettre="Z":Lettres(26)\Nombre=2
  
Dim NbLettreCh.b(1)  
Dim LgMotPlato.b(1,7)
Dim CaseChevalet.Chevalet(1,13)
  For j=0 To 1  
    For i=0 To 6
      CaseChevalet(j,i)\ValRang=0:CaseChevalet(j,i+7)\ValRang=0
      CaseChevalet(j,i)\Lettre="":CaseChevalet(j,i+7)\Lettre=""
      CaseChevalet(j,i)\Change=#False
      CaseChevalet(j,i)\CaseX=#BaseChevaletX+PosJoueur2:CaseChevalet(j,i+7)\CaseX=#BaseChevaletX+#Cases+PosJoueur2
      CaseChevalet(j,i)\CaseY=#BaseChevaletY+(#Cases*i):CaseChevalet(j,i+7)\CaseY=#BaseChevaletY+(#Cases*i)
    Next i
    PosJoueur2=#PosJoueur2
  Next j
  PosJoueur2=0
    
Dim CasePlateau.Plateau(1,7,8)
Dim MotsVerrou.b(1,7,1)
  For j=0 To 1
    For Mots=0 To 7
      For Letter=0 To 8
        CasePlateau(j,Mots,Letter)\CaseX=#BasePlateauX+(#Cases*Letter)+PosJoueur2
        CasePlateau(j,Mots,Letter)\CaseY=#BasePlateauY+(#Cases*Mots)
      Next Letter
      If Mots=0
          MotsVerrou(j,Mots,0)=#False
        Else
          MotsVerrou(j,Mots,0)=#True
      EndIf
      MotsVerrou(j,Mots,1)=#False
    Next Mots
    PosJoueur2=#PosJoueur2
  Next j  
  PosJoueur2=0
;+-------------------------------------------------------------------
;-Chargement des Sprites
;+-------------------------------------------------------------------
UsePNGImageDecoder() 
For i=1 To 26
  LoadSprite(i,Lettres(i)\Chemin)
Next i
LoadSprite(Curseurs()\Curseur,installation$+"\Data\Curseur.png")
LoadSprite(#Plateau,installation$+"\Data\Plateau.png")
LoadSprite(#Lock,installation$+"\Data\Lock.png")
LoadSprite(#Llock,installation$+"\Data\Llock.png")
LoadSprite(#Valider,installation$+"\Data\Valider.png")
LoadSprite(#Annuler,installation$+"\Data\Annuler.png")
LoadSprite(#Passer,installation$+"\Data\Passer.png")
LoadSprite(#Ch3Lettres,installation$+"\Data\3lettres.png")
LoadSprite(#NlleLettre,installation$+"\Data\Nlettre.png")
LoadSprite(#Cache,installation$+"\Data\Cache.png")
DisplaySprite(#Plateau,0,0)
TransparentSpriteColor(Curseurs()\Curseur, 0, 255, 0)
DisplayTransparentSprite(Curseurs()\Curseur,mouseX,MouseY)

;+-------------------------------------------------------------------
;-Premier Tirage de Lettres
;+-------------------------------------------------------------------
  Tirage(6)
  
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

;+-------------------------------------------------------------------
;-Programme principal
;+-------------------------------------------------------------------
          Repeat

            DisplaySprite(#Plateau,0,0)

            ;++++++Affichage des lettres du chevalet
            For Player=0 To 1
              For Letter=0 To 13
                If CaseChevalet(Player,Letter)\Lettre<>""
                  DisplaySprite(CaseChevalet(Player,Letter)\ValRang,CaseChevalet(Player,Letter)\CaseX,CaseChevalet(Player,Letter)\CaseY)
                EndIf
              Next Letter
            Next PLayer
            ;+++++++++++++++++++++++++++++++++++++++

            ;++++++Affichage des lettres du Plateau
            For Player=0 To 1
              For Mots=0 To 7
                For Letter=0 To 8
                  If CasePlateau(Player,Mots,Letter)\Lettre<>"" And MotsVerrou(Player,Mots,0)=#False And MotsVerrou(Player,Mots,1)=#False
                    DisplaySprite(CasePlateau(Player,Mots,Letter)\ValRang,CasePlateau(Player,Mots,Letter)\CaseX,CasePlateau(Player,Mots,Letter)\CaseY)
                  ElseIf MotsVerrou(Joueur,Mots,0)
                    DisplaySprite(#Lock,CasePlateau(Joueur,Mots,Letter)\CaseX,CasePlateau(Joueur,Mots,Letter)\CaseY)
                  ElseIf MotsVerrou(Joueur,Mots,0)=#False And MotsVerrou(Joueur,Mots,1)
                    DisplaySprite(#Llock,CasePlateau(Joueur,Mots,Letter)\CaseX,CasePlateau(Joueur,Mots,Letter)\CaseY)
                  EndIf
                Next Letter
              Next Mots
            Next Player
            ;+++++++++++++++++++++++++++++++++++++++

            ;++++++Affichage des boutons Valider, Annuler, Passer
            DisplaySprite(#Passer,#PassX+PosJoueur2,#PassY)
            If Valider:DisplaySprite(#Valider,#ValidX+PosJoueur2,#ValidY):EndIf
            If Annuler:DisplaySprite(#Annuler,#AnnulX+PosJoueur2,#AnnulY):EndIf
            If Ch3Lettres:DisplaySprite(#Ch3Lettres,#CLettreX+PosJoueur2,#CLettreY):EndIf
            If NlleLettre:DisplaySprite(#NlleLettre,#NLettreX+PosJoueur2,#NLettreY):EndIf
            ;+++++++++++++++++++++++++++++++++++++++

            ;++++++Affichage des pions deplaces
            
            If Curseurs()\Lettre<>""
              DisplayTransparentSprite(Curseurs()\Curseur,mouseX-#LargeurPion/2,MouseY-#LargeurPion/2);Affichage du pointeur
            EndIf
            ;+++++++++++++++++++++++++++++++++++++++

            mouseX=WindowMouseX():mouseY=WindowMouseY()
            
            Select WaitWindowEvent()
                          
              Case #WM_LBUTTONUP
              
                If Curseurs()\Unlock=#False And (mouseX<100+PosJoueur2 Or mouseX>374+PosJoueur2 Or mouseY<125 Or mouseY>368) ;Je lache ailleurs que sur le plateau
                  LachePion()
                EndIf
                
                If Curseurs()\Unlock=#False And mouseX>100+PosJoueur2 And mouseX<374+PosJoueur2 And mouseY>125 And mouseY<368 
                  ManipPlato(mouseX,mouseY)
                EndIf

              Case #WM_LBUTTONDOWN
              
                If mouseX>100+PosJoueur2 And mouseX<374+PosJoueur2 And mouseY>125 And mouseY<368 And Curseurs()\Unlock And Tour>0
                  Jeu_Plateau(mouseX,mouseY)
                EndIf

                If mouseX>=18+PosJoueur2 And mouseX<=73+PosJoueur2 And mouseY>=157 And mouseY<=367 And Curseurs()\Unlock And Ch3lettres=#False
                  Jeu_Chevalet(mouseX,mouseY) 
                EndIf
                
                If Valider And mouseX>#ValidX+PosJoueur2 And mouseX<#ValidX+#BoutonX+PosJoueur2 And mouseY>#ValidY And mouseY<#ValidY+#BoutonY And Curseurs()\Unlock
                  Valider(MotJoue)
                EndIf
              
                If Annuler And mouseX>#AnnulX+PosJoueur2 And mouseX<#AnnulX+#BoutonX+PosJoueur2 And mouseY>#AnnulY And mouseY<#AnnulY+#BoutonY And Curseurs()\Unlock
                  AnnulOuPass(MotJoue,#False)
                EndIf
                
                If (PassJ1 Or PassJ2) And NlleLettre=#False And mouseX>#PassX+PosJoueur2 And mouseX<#PassX+#BoutonX+PosJoueur2 And mouseY>#PassY And mouseY<#PassY+#BoutonY And Curseurs()\Unlock
                  AnnulOuPass(MotJoue,#True)
                EndIf                
                
                If NlleLettre And mouseX>6+PosJoueur2 And mouseX<84+PosJoueur2 And mouseY>56 And mouseY<98 And Curseurs()\Unlock
                  Ch3lettres=#False:NlleLettre=#False:Tirage(1)
                EndIf
                
                If Ch3Lettres And mouseX>6+PosJoueur2 And mouseX<84+PosJoueur2 And mouseY>100 And mouseY<142 And Curseurs()\Unlock
                  DisplaySprite(#Cache,#NLettreX+PosJoueur2,#NLettreY):FlipBuffers(0):Ch3Lettres()
                EndIf

              Case #WM_KEYDOWN 
              
                key.b = EventwParam()
      
                If key = 27:End:EndIf

            EndSelect

            FlipBuffers(0)

          ForEver

;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

;+-------------------------------------------------------------------
;-Procedure de manipulation sur Plateau
;+-------------------------------------------------------------------
Procedure Jeu_Plateau(mouseX,mouseY)
  
  For Mots=0 To 7       ;Les lignes du plateau... Les Mots donc...!
    For Letter=0 To 8   ;Les Lettres sur les lignes
    
      If mouseX+(#LargeurPion/2)>=CasePlateau(Joueur,Mots,Letter)\CaseX And mouseX+(#LargeurPion/2)<=CasePlateau(Joueur,Mots,Letter)\CaseX+#Cases And mouseY+(#LargeurPion/2)>=CasePlateau(Joueur,Mots,Letter)\CaseY And mouseY+(#LargeurPion/2)<=CasePlateau(Joueur,Mots,Letter)\CaseY+#Cases And MotsVerrou(Joueur,Mots,0)=#False And MotsVerrou(Joueur,Mots,1)=#False ; Je cherche où je lache sur le plateau
        
        MotJoue=Mots 
        LettreJoue=Letter
                
        Curseurs()\Curseur=CasePlateau(Joueur,MotJoue,LettreJoue)\ValRang
        Curseurs()\Lettre=CasePlateau(Joueur,MotJoue,LettreJoue)\Lettre
        Curseurs()\PrevCase=CasePlateau(Joueur,MotJoue,LettreJoue)\PrevCase
        Curseurs()\Unlock=#False

        For i=LettreJoue To LgMotPlato(Joueur,MotJoue)-1  
          CasePlateau(Joueur,MotJoue,i)\Valrang=CasePlateau(Joueur,MotJoue,i+1)\Valrang
          CasePlateau(Joueur,MotJoue,i)\Lettre=CasePlateau(Joueur,MotJoue,i+1)\Lettre  
          CasePlateau(Joueur,MotJoue,i)\PrevCase=CasePlateau(Joueur,MotJoue,i+1)\PrevCase
        Next i
        
        LgMotPlato(Joueur,MotJoue)-1
        Break 2 
                                                              
      EndIf
      
    Next Letter      
  Next Mots
  
EndProcedure

;+-------------------------------------------------------------------
;-Manipulation des Lettres sur le Plateau
;+-------------------------------------------------------------------
Procedure ManipPlato(mouseX,mouseY)

  For Mots=0 To 7       ;Les lignes du plateau... Les Mots donc...!
    For Letter=0 To 8   ;Les Lettres sur les lignes
    
      If mouseX+(#LargeurPion/2)>=CasePlateau(Joueur,Mots,Letter)\CaseX And mouseX+(#LargeurPion/2)<=CasePlateau(Joueur,Mots,Letter)\CaseX+#Cases And mouseY+(#LargeurPion/2)>=CasePlateau(Joueur,Mots,Letter)\CaseY And mouseY+(#LargeurPion/2)<=CasePlateau(Joueur,Mots,Letter)\CaseY+#Cases And MotsVerrou(Joueur,Mots,0)=#False And MotsVerrou(Joueur,Mots,1)=#False ; Je cherche où je lache sur le plateau
        
        MotJoue=Mots
        LettreJoue=Letter
        
        If CasePlateau(Joueur,MotJoue,LettreJoue)\Lettre=""
          If NbLettreCh(Joueur)<2 And CasePlateau(Joueur,MotJoue,0)\Lettre="":Break 2:EndIf
          CasePlateau(Joueur,MotJoue,LgMotPlato(Joueur,MotJoue))\ValRang=Curseurs()\Curseur 
          CasePlateau(Joueur,MotJoue,LgMotPlato(Joueur,MotJoue))\Lettre=Curseurs()\Lettre 
          CasePlateau(Joueur,MotJoue,LgMotPlato(Joueur,MotJoue))\PrevCase=Curseurs()\PrevCase
          Curseurs()\Curseur=#Pointeur 
          Curseurs()\Lettre=""
          Curseurs()\PrevCase=#False
          Curseurs()\Unlock=#True
          LgMotPlato(Joueur,MotJoue)+1
          For j=0 To 7
            If j<>MotJoue:MotsVerrou(Joueur,j,1)=#True:EndIf
          Next j
          Break 2 
  
        ElseIf CasePlateau(Joueur,MotJoue,LettreJoue)\Lettre<>"" And LgMotPlato(Joueur,MotJoue)<9
          For i=LgMotPlato(Joueur,MotJoue)-1 To LettreJoue Step -1 
            CasePlateau(Joueur,MotJoue,i+1)\Valrang=CasePlateau(Joueur,MotJoue,i)\Valrang
            CasePlateau(Joueur,MotJoue,i+1)\Lettre=CasePlateau(Joueur,MotJoue,i)\Lettre
            CasePlateau(Joueur,MotJoue,i+1)\PrevCase=CasePlateau(Joueur,MotJoue,i)\PrevCase
          Next i
        CasePlateau(Joueur,MotJoue,LettreJoue)\ValRang=Curseurs()\Curseur
        CasePlateau(Joueur,MotJoue,LettreJoue)\Lettre=Curseurs()\Lettre
        CasePlateau(Joueur,MotJoue,LettreJoue)\PrevCase=Curseurs()\PrevCase
        Curseurs()\Curseur=#Pointeur 
        Curseurs()\Lettre="" 
        Curseurs()\PrevCase=0
        Curseurs()\Unlock=#True
        LgMotPlato(Joueur,MotJoue)+1 
        For j=0 To 7
            If j<>MotJoue:MotsVerrou(Joueur,j,1)=#True:EndIf
          Next j                                                    
        Break 2             
         
        ElseIf LgMotPlato(Joueur,MotJoue)>8
          LachePion()
          Break 2
        EndIf
        
      EndIf
      
    Next Letter
  Next Mots
  
  If LgMotPlato(Joueur,MotJoue)>=3:Valider=#True:Annuler=#True:EndIf
  
  LachePion()
        
EndProcedure

;+-------------------------------------------------------------------
;-Procedure de manipulation sur Chevalet
;+-------------------------------------------------------------------
Procedure Jeu_Chevalet(mouseX,mouseY)
    
  For j=0 To 13
    If mouseX>=CaseChevalet(Joueur,j)\CaseX And mouseX<=CaseChevalet(Joueur,j)\CaseX+#LargeurPion And mouseY>=CaseChevalet(Joueur,j)\CaseY And mouseY<=CaseChevalet(Joueur,j)\CaseY+#LargeurPion And CaseChevalet(Joueur,j)\Lettre<>""
      Curseurs()\Curseur=CaseChevalet(Joueur,j)\ValRang
      Curseurs()\Lettre=CaseChevalet(Joueur,j)\Lettre
      Curseurs()\PrevCase=j
      Curseurs()\Unlock=#False
      CaseChevalet(Joueur,j)\ValRang=0:CaseChevalet(Joueur,j)\Lettre=""
      Tour+1
      NbLettreCh(Joueur)-1
      Break
    EndIf
  Next j
    
EndProcedure

;+-------------------------------------------------------------------
;-Je lache un pion au dessus d'une Aire de Jeu Invalide
;+-------------------------------------------------------------------
Procedure LachePion()
  If Curseurs()\Unlock=#False And Curseurs()\PrevCase<>99
    CaseChevalet(Joueur,Curseurs()\PrevCase)\ValRang=Curseurs()\Curseur
    CaseChevalet(Joueur,Curseurs()\PrevCase)\Lettre=Curseurs()\Lettre
    NbLettreCh(Joueur)+1:Tour-1
    Curseurs()\Curseur=#Pointeur
    Curseurs()\Lettre=""
    Curseurs()\Unlock=#True
    Curseurs()\PrevCase=#False
  EndIf
EndProcedure  

;+-------------------------------------------------------------------
;-Je verifie et eventuellement valide la mot d'apres le dico
;+-------------------------------------------------------------------
Procedure Valider(Mot)
;Je considere pour l'instant que le mot est toujours bon
  For Letter=0 To LgMotPlato(Joueur,Mot)-1
    Stockage(Joueur,Mot,Letter)\CaseX=CasePlateau(Joueur,Mot,Letter)\CaseX
    Stockage(Joueur,Mot,Letter)\CaseY=CasePlateau(Joueur,Mot,Letter)\CaseY
    Stockage(Joueur,Mot,Letter)\ValRang=CasePlateau(Joueur,Mot,Letter)\ValRang
    Stockage(Joueur,Mot,Letter)\Lettre=CasePlateau(Joueur,Mot,Letter)\Lettre
    CasePlateau(Joueur,Mot,Letter)\PrevCase=99
  Next Letter
  
  For i=0 To 7
    MotsVerrou(Joueur,i,1)=#False
    If CasePlateau(Joueur,i,0)\Lettre<>"":MotsVerrou(Joueur,i+1,0)=#False:EndIf
  Next i
  
  Ranger() 
  
  Valider=#False:Annuler=#False:Tour=0
  
  If NbLettreCh(Joueur)>2:Ch3lettres=#True:NlleLettre=#True:Else:Tirage(1):EndIf
    
EndProcedure

;+-------------------------------------------------------------------
;-Jannule le mot ou je Passe
;+-------------------------------------------------------------------
Procedure AnnulOuPass(Mot,Choix)

  For Letter=0 To 8 
  
    If CasePlateau(Joueur,Mot,Letter)\PrevCase<>99 And CasePlateau(Joueur,Mot,Letter)\Lettre<>""
      CaseChevalet(Joueur,CasePlateau(Joueur,Mot,Letter)\PrevCase)\Lettre=CasePlateau(Joueur,Mot,Letter)\Lettre
      CaseChevalet(Joueur,CasePlateau(Joueur,Mot,Letter)\PrevCase)\ValRang=CasePlateau(Joueur,Mot,Letter)\ValRang
      LgMotPlato(Joueur,Mot)-1:NbLettreCh(Joueur)+1
    EndIf
    
  Next Letter
   
  For Letter=0 To 8
    CasePlateau(Joueur,Mot,Letter)\ValRang=Stockage(Joueur,Mot,Letter)\ValRang
    CasePlateau(Joueur,Mot,Letter)\Lettre=Stockage(Joueur,Mot,Letter)\Lettre    
  Next Letter
  
  For i=0 To 7
    MotsVerrou(Joueur,i,1)=#False
  Next i

  Valider=#False:Annuler=#False:Tour=0
  
  If Choix
      If PassJ1
        PosJoueur2=#PosJoueur2:Joueur=1:PassJ1=#False:PassJ2=#True
      ElseIf PassJ2
        PosJoueur2=0:Joueur=0:PassJ1=#True:PassJ2=#False
      EndIf
  EndIf
  
  If Depart=#True:Depart=#False:Tirage(6):EndIf
        
EndProcedure

;+-------------------------------------------------------------------
;-Procedure de tirage au sort des lettres
;+-------------------------------------------------------------------
Procedure Tirage(Nb)
  For j=1 To Nb
    BonTirage=0
   
    Repeat
      hasard=Random(25)+1
      If Lettres(hasard)\Nombre>0
        BonTirage=1  
      EndIf
    Until BonTirage
    
    Lettres(hasard)\Nombre-1
   
    For i=0 To 13
      If CaseChevalet(Joueur,i)\Lettre=""
        CaseChevalet(Joueur,i)\ValRang=hasard:CaseChevalet(Joueur,i)\Lettre=Lettres(hasard)\Lettre
        Break
      EndIf
    Next i
    NbLettreCh(Joueur)+1
  Next j  
EndProcedure

;+-------------------------------------------------------------------
;-Procedure de rangement du chevalet
;+-------------------------------------------------------------------
Procedure Ranger()
  Tempo.b=0
  For i=0 To 13
      If CaseChevalet(Joueur,i)\Lettre<>""
      CaseChevalet(Joueur,Tempo)\Lettre=CaseChevalet(Joueur,i)\Lettre
      CaseChevalet(Joueur,Tempo)\ValRang=CaseChevalet(Joueur,i)\ValRang
      Tempo+1
    EndIf
  Next i
  For i=NbLettreCh(Joueur) To 13
    CaseChevalet(Joueur,i)\Lettre=""
    CaseChevalet(Joueur,i)\ValRang=0
  Next i
EndProcedure

;+-------------------------------------------------------------------
;-Changement de 3 Lettres
;+-------------------------------------------------------------------
Procedure Ch3Lettres()
Tempo.b

Repeat
mouseX=WindowMouseX():mouseY=WindowMouseY()
  
    If WaitWindowEvent()=#WM_LBUTTONDOWN 

      For j=0 To 13
        If mouseX>=CaseChevalet(Joueur,j)\CaseX And mouseX<=CaseChevalet(Joueur,j)\CaseX+#LargeurPion And mouseY>=CaseChevalet(Joueur,j)\CaseY And mouseY<=CaseChevalet(Joueur,j)\CaseY+#LargeurPion
          If CaseChevalet(Joueur,j)\Change=#False And Tempo<3
              CaseChevalet(Joueur,j)\Change=#True
              DisplayRGBFilter(CaseChevalet(Joueur,j)\CaseX,CaseChevalet(Joueur,j)\CaseY,#LargeurPion,#LargeurPion,255,0,0)
              DisplaySprite(#Valider,#ValidX+PosJoueur2,#ValidY)
              Tempo+1
              FlipBuffers(0)
              Break
          ElseIf CaseChevalet(Joueur,j)\Change=#True
              CaseChevalet(Joueur,j)\Change=#False
              DisplaySprite(CaseChevalet(Joueur,j)\ValRang,CaseChevalet(Joueur,j)\CaseX,CaseChevalet(Joueur,j)\CaseY)
              Tempo-1
              FlipBuffers(0)
              Break
          EndIf
        EndIf
      Next j
    
      If Tempo=3 And mouseX>#ValidX+PosJoueur2 And mouseX<#ValidX+#BoutonX+PosJoueur2 And mouseY>#ValidY And mouseY<#ValidY+#BoutonY
        For j=0 To 13
          If CaseChevalet(Joueur,j)\Change=#True
            CaseChevalet(Joueur,j)\Lettre=""
            CaseChevalet(Joueur,j)\ValRang=0
          EndIf
        Next j
        Ranger():NbLettreCh(Joueur)-3:Tirage(3):Ch3lettres=#False:NlleLettre=#False
        Break
      EndIf
    
   EndIf
   
ForEver

EndProcedure

Voili voilou

Bon c'est tres loin d'etre terminé, mais cette partie (le déplacement des pions) fonctionne.... à ma façon...

A+
[__/--Torp--\__]

Voici donc le code source et les images :

http://www.penguinbyte.com/apps/pbwebst ... rnaque.zip

Publié : sam. 11/déc./2004 2:33
par garzul
Salut , franchement sa à l'air trés bien ainsi que commet que tu code mais j'aimerais avoir les images car je peux pas tester :) merci et bravo pour ton prog ;) ++

Publié : sam. 11/déc./2004 8:40
par jbernard13
oui essaye de mettre le fichier source et les images dans un zip
on peux pas tester ton programme il manque les fichiers image

Publié : sam. 11/déc./2004 9:44
par Torp
Ben vi, je veux bien mais comment on attache un fichier dans un forum ?... :cry:

Publié : sam. 11/déc./2004 9:51
par comtois
tu places ton fichier sur un site , et tu donnes l'adresse .
tu dois bien avoir un espace à ta disposition avec ton abonnement internet ?

Publié : sam. 11/déc./2004 10:58
par Torp
C'est bien ce j'avais cru comprendre... Pas pratique tout ca... J'ai jamais éprouvé le besoin d'utiliser cet espace, donc je ne m'en suis jamais occupé...
Bon vais m'en occuper alors.

++

Publié : sam. 11/déc./2004 11:12
par comtois
tu n'es pas obligé de faire un joli site ,tu ouvres juste un répetoire dans ton espace réservé, et tu stockes les fichiers que tu veux diffuser , zapman a fait un utilitaire pour transférer les fichiers , sinon j'utilise FileZilla , gratuit , en français , et simple .

http://filezilla.sourceforge.net/

Publié : sam. 11/déc./2004 11:43
par Fred
Sinon tu peux utiliser http://purebasic.myftp.org/ qui est fait expres pour ca.

Publié : sam. 11/déc./2004 11:59
par Chris
Fred a écrit :Sinon tu peux utiliser http://purebasic.myftp.org/ qui est fait expres pour ca.
Tu aurais pu nous le dire plus tôt qu'il y avait un ftp fait pour ça :lol:
Tu en as d'autres, des adresses qu'on connaît pas? :roll:

Publié : sam. 11/déc./2004 12:02
par comtois
Beach l'avait annoncé sur le forum anglais , et je crois que quelqu'un d'autre propose la même chose .Regarde dans la section annonce du forum anglais . C'est vrai qu'il y a cette solution , je n'y avais pas pensé :)

Publié : sam. 11/déc./2004 12:07
par comtois
il y a aussi celui là , et je crois qu'il y en a un troisième ?

http://purebasicftp.info/

Publié : sam. 11/déc./2004 12:15
par Chris
Ben le forum anglais, en général, je le parcours vite fait.
Alors j'ai rien vu :lol:

Publié : sam. 11/déc./2004 18:30
par Torp
Super le FTP Pure Basic :lol:

Voici donc le code source et les images :

http://www.penguinbyte.com/apps/pbwebst ... rnaque.zip

++

Publié : sam. 11/déc./2004 18:51
par Le Soldat Inconnu
OK, pensez à changer l'adresse du dossier au début du programme

sinon, c'est quoi le but du jeu ?

Publié : sam. 11/déc./2004 19:18
par Chris
Ca a l'air joli, mais c'est pareil, j'ai pas compris le fontionnement.

J'imagine qu'il faut faire des mots avec les lettres qu'on a en stock, mais là, je viens d'essayer, j'avais six consonnes sur six lettres. Pas facile de faire un mot avec ça :lol:

En redémarrant le jeu, j'ai réussi à faire un mot de quatre lettres, mais qu'est-ce que je fais, avec les deux qui restent ?

Faudrait faire un petit mode d'emploi, sinon, ça a l'air sympa :wink: