Mon Premier Code
Publié : ven. 10/déc./2004 23:44
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!
Bon c'est sur pour tester vous allez avoir du mal... car y a pas les images... mais faut imaginer...
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
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!

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

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
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