donc, Après reflexion j ai modifie les parametres...
via le menu options..
pour l'utiliser voir le compiler avec version demo de PureBasic.
Code : Tout sélectionner
; Forum: http://www.purebasic.fr/german/viewtopic.php?t=3249&start=10
; Autheur de procedure DrawCube: NicTheQuick (updated for PB 4.00 by Andre)
; (YAMS Auteur kernadec PB 630 et supérieur par kernadec le 25 Juin 2026)
; Version corrigée pour la selection de Dés avec la souris on/off Aout 2026
; version 5 en moins de 800 lignes
UsePNGImageDecoder()
EnableExplicit
Enumeration
#Window_Des
EndEnumeration
Structure yams
Num.l
Tours.l
Points.l
EndStructure
Global NewList Ranglist.yams()
Global Event, Cube_Size.l, Cube_Points_r.l, Cube_Img.l, Cube_alpha.l, main, SonActif.l, TitreW$, block
Global numero.l, Lancer.l = 1, Joueur.l, Jco, Jcolor.l, i, u, a.l, n.l, ne.l, ns.l, m$, lg, ii, uu
Global Total, Total$, Total1$, Total2$, Total3$, Score$, result1.l,ColorDes,tmp.l, foix1.l, ToPair
Global Calcul1$, Calcul2$, Calcul3$, Calcul4$, Calcul5$, Calcul6$, dicte$, version$, chemin$, Pt_Suite
Global FtArial, ni, txi, tyi, xt, yt, T$, Cf, Cb, Ht, col, bcol, xb, yb, Styl, fon$, fon1$, fon2$
Global Dim Resultat(6), Dim Resultat2(6), Dim XPosition(6), Dim Des_Fixe(6),Dim Couleur(6)
Global Dim TourJoueur(6), Dim RangJoueur$(6), Dim Filtre(6), Dim triage$(5), Dim Paire$(6)
Global Dim ScoreJoueur(6), Dim ScoreChance(6), Dim Language$(36), Dim Language1$(36)
Procedure country(lg)
If lg = 1 ; french()
Language$(1) = "Joueur n°1": Language$(2) = "Joueur n°2": Language$(3) = "Joueur n°3":Language$(4) = "Joueur n°4": Language$(5) = "Joueur n°5": Language$(6) = "Joueur n°6": Language$(7) = "JOUEUR N° "
Language$(8) = "[ Espace ]... Lance " + Str(5) + " Dés"
Language$(9) = "[ Return ] = PASSER et VALIDER LE RESULTAT"
Language$(10) = " [Joueur suivant] RESULTAT = "
Language$(11) = "[ Espace ].Résultat du 1er Coup "
Language$(12) = "[ Espace ].Résultat du 2ème Coup"
Language$(13) = "[ Espace ]...3ème Coup = RESULTAT"
Language$(14) = "Cliquer sur les Dés qui doivent conserver leurs valeurs Pour choisir un joueur > Clavier de 1 à 6"
Language$(15) = "Color Des"
Language$(16) = "Resultat Sonor"
Language$(17) = "Efface tout"
Language$(18) = "Quit"
Language$(19) = "[ Espace ]... Lance 5 Dés"
Language$(20) = " Score "
Language$(21) = " Points "
Language$(22) = " Tours "
Language$(23) = " Chance "
Language$(24) = " Tirage "
Language$(25) = "Tours"
Language$(26) = "rang"
Language$(27) = "Options"
Language$(28) = "Joueur"
Language$(29) = " Brelan 20"
Language$(30) = " Full 25"
Language$(31) = " Carre 30"
Language$(32) = " Pt.Suit 15"
Language$(33) = " Gr.Suit 40"
Language$(34) = " YAM'S 50"
Language$(35) = " Z e r o + 0 "
Language$(36) = " 2 Paires 10"
EndIf
If lg = 2 ;English()
Language$(1) = " Player n°1":Language$(2) = " Player n°2":Language$(3) = " Player n°3":Language$(4) = " Player n°4":Language$(5) = " Player n°5":Language$(6) = " Player n°6": Language$(7) = "PLAYER N° "
Language$(8) = "( Space )...Roll the" + Str(5) + " Dice"
Language$(9) = "[ Return ] = PROCESS and COMFIRM THE RESULT"
Language$(10) = " [ Next player ] THE RESULT = "
Language$(11) = "[ Space ]...Result of the 1st Round"
Language$(12) = "[ Space ]...Result of the 2nd Round"
Language$(13) = "[ Space ]...3rd Move = RESULT"
Language$(14) = "Click on the dice that should keep their values To select a player > Keyboard keys 1 to 6"
Language$(15) = "Dice Color"
Language$(16) = "Sound Result"
Language$(17) = "Erase everything"
Language$(18) = "Quit"
Language$(19) = "[ Space ]... Roll the 5 Dice"
Language$(20) = " Score "
Language$(21) = " Points "
Language$(22) = "RoundPlay"
Language$(23) = " Luck "
Language$(24) = "Sort order"
Language$(25) = "Round"
Language$(26) = "Row"
Language$(27) = "Options"
Language$(28) = "Player"
Language$(29) = " 3of kind 20"
Language$(30) = "FullHouse 25"
Language$(31) = " 4of kind 30"
Language$(32) = "Sequen4 15"
Language$(33) = "Sequen5 40"
Language$(34) = " Yahtzee 50"
Language$(35) = " Z e r o + 0 "
Language$(36) = " 2 pairs 10"
EndIf
If lg = 3 ;German()
Language$(1) = "Spieler n°1": Language$(2) = "Spieler n°2": Language$(3) = "Spieler n°3":Language$(4) = "Spieler n°4":Language$(5) = "Spieler n°5":Language$(6) = "Spieler n°6": Language$(7) = "SPIELER N° "
Language$(8) = "[Leertaste]..Starte " + Str(5) + " Würfel"
Language$(9) = "[ Return ] = Ausführen und Ergebnis bestätigen"
Language$(10) = " [Nächster Spieler] ERGEBNIS ="
Language$(11) = "[Leerzeichen]. Ergebnis 1. Wurfs"
Language$(12) = "[Leerzeichen]. Ergebnis 2. Wurfs"
Language$(13) = "[Leerzeichen]..3. Zug = ERGEBNIS"
Language$(14) = "Klicken Sie auf die Würfel, um deren Wert zu behalten : einen Spieler auszuwählen >Tastatur 1bis6"
Language$(15) = "Farbe des Würfels"
Language$(16) = "Klangresultat"
Language$(17) = "Löscht alles"
Language$(18) = "Beenden"
Language$(19) = "[Leertaste] ... " + "5" + " Würfel werfen"
Language$(20) = " Spielstand"
Language$(21) = " Punkte "
Language$(22) = " Zyklus "
Language$(23) = " Glück "
Language$(24) = " Auflage"
Language$(25) = "Zyklus"
Language$(26) = "rang"
Language$(27) = "Option"
Language$(28) = "Spieler"
Language$(29) = " Drilling 20"
Language$(30) = "FullHous 25"
Language$(31) = " Vierling 30"
Language$(32) = "Fortset4 15"
Language$(33) = "Fortset5 40"
Language$(34) = " Yahtzee 50"
Language$(35) = " Z e r o + 0 "
Language$(36) = " 2 Paar 10"
EndIf
If lg = 4 ;Spagne()
Language$(1) = " Jugador 1": Language$(2) = " Jugador 2": Language$(3) = " Jugador 3": Language$(4) = " Jugador 4": Language$(5) = " Jugador 5": Language$(6) = " Jugador 6": Language$(7) = "JUGADOR N° "
Language$(8) = "[ Espacio ]... Lanza" + Str(5) + "Dados"
Language$(9) = "[ Return ] = PASAR y VALIDAR EL RESULTADO"
Language$(10) = "[Siguiente jugador] RESULTADO ="
Language$(11) = "[Espacio]....Resultado de la 1.ª ronda"
Language$(12) = "[ Espacio ]...Resultado de la segunda ronda"
Language$(13) = "[ Espacio ]...3.er golpe = RESULTADO"
Language$(14) = "Haz clic en los dados que deban conservar valores Para elegir un jugador > Teclado del 1 al 6"
Language$(15) = "Dados Color"
Language$(16) = "Su resultado"
Language$(17) = "Borra todo"
Language$(18) = "Salir"
Language$(19) = "[Espacio]... Lanza 5 dados"
Language$(20) = " Score "
Language$(21) = " Puntos "
Language$(22) = " Ciclo"
Language$(23) = "Fortuna"
Language$(24) = "Sorteo"
Language$(25) = "Redonda"
Language$(26) = "Fila"
Language$(27) = "Opciones"
Language$(28) = "Jugador"
Language$(29) = "3Iguales 20"
Language$(30) = "Casalena 25"
Language$(31) = "4Iguales 30"
Language$(32) = "Esquale4 15"
Language$(33) = "Esquale5 40"
Language$(34) = "5Iguales 50"
Language$(35) = " Z e r o + 0 "
Language$(36) = " 2 pares 10"
EndIf
EndProcedure
Couleur(1) = RGBA(0, 255, 255, 0) : Couleur(2) = #Red : Couleur(3) = #Green : Couleur(4) = #Blue : Couleur(5) = #Yellow : Couleur(6) = #Magenta
RandomizeArray(Couleur(),1,6)
version$ = " 5"+ Space(30)
TitreW$ = " YAHTZEE - Y A M S "
chemin$ = ""
SonActif = 0
fon1$ = "courier new normal" : fon2$ = "Modern normal"
If #PB_Compiler_Version => 630 ;## Réglages CreateImage() ########
Cube_alpha = 255
Else ; mettre à zero "Cube_alpha" pour version inferieur à PB 6.30
Cube_alpha = 0
EndIf
bcol = RGBA(173, 173, 173, 0) ; couleur selection boutons
numero = 5 ; Mode 5 Dés
Joueur = 1
Cube_Size = 105
Cube_Points_r = Cube_Size / 10
For i = 0 To 6
CreateImage(i, Cube_Size, Cube_Size, 32 , RGBA(255, 255, 255, Cube_alpha))
Next i
For i = 21 To 26
CreateImage(21, Cube_Size, Cube_Size, 32 , RGBA(255, 255, 255, 30))
Next i
CreateImage(11, 15, 15, 24 , Couleur(1)):CreateImage(12, 15, 15, 24 , Couleur(2)):CreateImage(13, 15, 15, 24 , Couleur(3)):CreateImage(14, 15, 15, 24 , Couleur(4)):CreateImage(15, 15, 15, 24 , Couleur(5)):CreateImage(16, 15, 15, 24 , Couleur(6))
CreateImage(21, 50, 20, 24 , Couleur(1)):CreateImage(22, 50, 20, 24 , Couleur(2)):CreateImage(23, 50, 20, 24 , Couleur(3)):CreateImage(24, 50, 20, 24 , Couleur(4)):CreateImage(25, 50, 20, 24 , Couleur(5)):CreateImage(26, 50, 20, 24 , Couleur(6))
XPosition(1) = 10:XPosition(2) = 130:XPosition(3) = 250:XPosition(4) = 370:XPosition(5) = 490:XPosition(6) = 610
Procedure carre(col, xb) ; affiche carre autour du bouton selecte
StartDrawing(WindowOutput(#Window_Des))
LineXY(xb + 7 , 0 + 7 , xb + Cube_Size + 17, 0 + 7 , col): LineXY(xb + 7 , 1 + 7 , xb + Cube_Size + 17, 1 + 7 , col)
LineXY(xb + 7 , 2 + 7 , xb + Cube_Size + 17, 2 + 7 , col): LineXY(xb + 7 , 3 + 7 , xb + Cube_Size + 17, 3 + 7 , col)
;ligne bas
LineXY(xb + 1 + 7, Cube_Size-3 + 18, xb + Cube_Size + 17, Cube_Size-3 + 18, col)
LineXY(xb + 1 + 7, Cube_Size-2 + 18, xb + Cube_Size + 17, Cube_Size-2 + 18, col)
LineXY(xb + 1 + 7, Cube_Size-1 + 18, xb + Cube_Size + 17, Cube_Size-1 + 18, col)
LineXY(xb + 1 + 7, Cube_Size + 18, xb + Cube_Size + 17, Cube_Size + 18, col)
;ligne gauche
LineXY(xb + 3 + 7, 7, xb + 3 + 7, Cube_Size + 17 , col)
LineXY(xb + 2 + 7, 7, xb + 2 + 7, Cube_Size + 17 , col)
LineXY(xb + 1 + 7, 7, xb + 1 + 7, Cube_Size + 17 , col)
LineXY(xb + 0 + 7, 7, xb + 0 + 7, Cube_Size + 17 , col)
;ligne droite
LineXY(xb + Cube_Size-3 + 17 , 7, xb + Cube_Size-3 + 17, Cube_Size + 17 , col)
LineXY(xb + Cube_Size-2 + 17 , 7, xb + Cube_Size-2 + 17, Cube_Size + 17 , col)
LineXY(xb + Cube_Size-1 + 17 , 7, xb + Cube_Size-1 + 17, Cube_Size + 17 , col)
LineXY(xb + Cube_Size + 17 , 7, xb + Cube_Size + 17, Cube_Size + 17 , col)
StopDrawing()
EndProcedure
Procedure ButtonTextColor(ni, txi, tyi, xt, yt, T$, Cf, Cb, Ht, Styl, fon$)
If IsImage(ni):FreeImage(ni):EndIf
If CreateImage(ni, txi, tyi, 32, Cb)
FtArial = LoadFont(1, fon$, Ht, Styl)
StartDrawing(ImageOutput(ni))
DrawingFont(FtArial)
DrawingMode(1)
DrawText(xt+1, yt-1, T$, RGBA(0, 0, 0, Cube_alpha), cb)
DrawText(xt, yt, T$, Cf, Cb)
DrawingFont(GetStockObject_(#SYSTEM_FONT))
StopDrawing()
EndIf
EndProcedure
Procedure Col_Joueur(Jco)
If Jco = 1 : Jcolor = Couleur(1) : EndIf:If Jco = 2 : Jcolor = Couleur(2) : EndIf:If Jco = 3 : Jcolor = Couleur(3) : EndIf:If Jco = 4 : Jcolor = Couleur(4) : EndIf:If Jco = 5 : Jcolor = Couleur(5) : EndIf: If Jco = 6 : Jcolor = Couleur(6) : EndIf:SetWindowColor(#Window_Des, Jcolor)
EndProcedure
Procedure CheckBox_0()
; reactive en gris le bouton valide return avant les 3 coup de des
ButtonTextColor(7, 350, 34, 56, 11, Language$(9), RGBA(0, 0, 0, 0), RGBA(220, 220, 220, 128), 8, 0, fon2$)
ButtonImageGadget(17, 350, 145, Cube_Size + 145, 30, ImageID(7), #PB_Button_Toggle)
For i = 1 To 6 : SetGadgetState(20 + i, 0) : Des_Fixe(i) = 0: Next i
For i = 1 To 6
ButtonImageGadget(i, XPosition(i), 10, Cube_Size + 5, Cube_Size + 5, ImageID(0), #PB_Image_Border | #PB_Button_Toggle)
Next i
EndProcedure
Procedure StateMenu(a)
If a = 0 : For i = 1 To 6 : SetMenuItemState(0, i, 0) : Next i : EndIf
If a = 1 : For i = 11 To 16 : SetMenuItemState(0, i, 0) : Next i : EndIf
EndProcedure
Procedure NewMenuIcon(Nimg.l, co.l)
CreateImage(Nimg, 16, 16, 32)
StartDrawing(ImageOutput(Nimg))
DrawingMode(#PB_2DDrawing_Default )
Box(0, 0, 15, 15, co)
DrawingMode(#PB_2DDrawing_Outlined )
Box(0, 0, 16, 16, RGBA(127, 127, 127, 255))
StopDrawing()
ProcedureReturn ImageID(Nimg)
EndProcedure
Procedure efface_des(ne)
StartDrawing(ImageOutput(ne))
DrawingMode(0)
Box(0, 0, Cube_Size - 1, Cube_Size - 1, RGB(255, 255, 255))
StopDrawing()
SetGadgetState(ne, ImageID(ne))
SetWindowTitle(0, TitreW$ + version$ + Space(15) + Language$(7) + Str(Joueur))
ButtonTextColor(8, 350, 34, 110, 11, Language$(8), RGBA(0, 0, 0, 0), RGBA(220, 250, 190, 100), 8, 0, fon2$)
ButtonImageGadget(15, XPosition(1), 145, Cube_Size + 131, 30, ImageID(8), #PB_Button_Toggle)
; affiche gains
ButtonTextColor(105, 92, 28, -10, 6, "", RGBA(255, 255, 255, Cube_alpha), RGBA(255, 255, 255, Cube_alpha), 12, 0, fon1$)
ButtonImageGadget(105, 248, 146, 100, 28, ImageID(105))
EndProcedure
Procedure test_select()
block = 0 : For i = 1 To 5 : If GetGadgetState(20 + i) = 0 : block + 1 : EndIf : Next i
If block = 5 : score$ = Language$(35) : Total2$ = "" : EndIf
EndProcedure
Procedure vocal(chemin$, dicte$,tmp) ; donner de la voix aux resultats
;precedure en attente de fichiers son
;##################################################################################### ;Utiliza este sitio para crear letras durante el juego "https://soundoftext.com/)
;copiar los archivos paroles.OGG en el directorio del Yahtzee
;Nutze diese Website, um während des Spiels Songtexte zu erstellen "https://soundoftext.com/)
;Kopieren Sie die Dateien paroles.OGG in das Yahtzee-Verzeichnis
;Use this site to create lyrics during the game "https://soundoftext.com/)
;copy the paroles.OGG files to the Yahtzee directory
;Utiliser ce site pour creer des paroles pendant le jeu "https://soundoftext.com/)
;copier les fichiers paroles.OGG dans repertoire du Yahtzee
;Default file names example : 10.ogg, 15.ogg, 20.ogg, 25.ogg, 30.ogg, 40.ogg, 50.ogg
;#####################################################################################
If InitSound() ; Initialisation des Sons
UseOGGSoundDecoder() ; Utilisation des fichiers ogg
If LoadSound(0, #PB_Compiler_Home + chemin$ + dicte$)
PlaySound(0, #PB_Sound_Loop): Delay(tmp) : FreeSound(0) ; Le son est libéré
EndIf
EndIf
EndProcedure
Procedure range()
For i = 1 To 5 : triage$(i) = Mid(Total2$,i ,1) : Next i
SortArray(triage$(), #PB_Sort_Ascending)
Total2$ = triage$(1) + triage$(2) + triage$(3) + triage$(4) + triage$(5)
EndProcedure
Procedure Cherche2paires()
Range(): uu = 0
For ii = 1 To 6
If CountString(total2$,Paire$(ii)) : uu = uu + 1 : If uu = 2 : Score$ = Language$(36)
Else : Score$ = "" : EndIf : EndIf
Next ii
EndProcedure
Procedure Cherche_Petite_Suite()
;Cherche_Petite_Suite
Range() : If Left(total2$,4) = "1234" : Score$ = Language$(32) : EndIf
Range() : If Left(total2$,4) = "2345" : Score$ = Language$(32) : EndIf
Range() : If Left(total2$,4) = "3456" : Score$ = Language$(32) : EndIf
Range() : If Left(total2$,5) = "11234" : Score$ = Language$(32) : EndIf
Range() : If Left(total2$,5) = "12234" : Score$ = Language$(32) : EndIf
Range() : If Left(total2$,5) = "12334" : Score$ = Language$(32) : EndIf
Range() : If Left(total2$,5) = "22345" : Score$ = Language$(32) : EndIf
Range() : If Left(total2$,5) = "23345" : Score$ = Language$(32) : EndIf
Range() : If Left(total2$,5) = "23445" : Score$ = Language$(32) : EndIf
Range() : If Left(total2$,5) = "33456" : Score$ = Language$(32) : EndIf
Range() : If Left(total2$,5) = "34456" : Score$ = Language$(32) : EndIf
Range() : If Left(total2$,5) = "34556" : Score$ = Language$(32) : EndIf
Range() : If Left(total2$,5) = "13456" : Score$ = Language$(32) : EndIf
EndProcedure
Procedure Combinaisons()
;To do this, I set these two minor options To 10 points For pairs And 15 points
;For minor straights of 4 dice; do not change the order of these point values,
;As doing so could disrupt the display of the results.
;Recherche des repetitions de chiffres dans Total2 trié en croissance
Calcul1$ = Str(CountString(Total2$, "1"))
Calcul2$ = Str(CountString(Total2$, "2"))
Calcul3$ = Str(CountString(Total2$, "3"))
Calcul4$ = Str(CountString(Total2$, "4"))
Calcul5$ = Str(CountString(Total2$, "5"))
Calcul6$ = Str(CountString(Total2$, "6"))
; Total3 = Second Rangement Croissant
Total3$ = Calcul1$ + Calcul2$ + Calcul3$ + Calcul4$ + Calcul5$ + Calcul6$
; Recherche des Combinaisons selon les règles du YAMS standard
If ToPair = 1 : Cherche2paires() : EndIf
If CountString(Total3$, "3") = #True : Score$ = Language$(29) : EndIf
If CountString(Total3$, "3") = #True
If CountString(Total3$, "2") = #True : Score$ = Language$(30) : EndIf : EndIf
If CountString(Total3$, "4") = #True : Score$ = Language$(31) : EndIf
If CountString(Total3$, "5") = #True : Score$ = Language$(34) : EndIf
If Pt_Suite = 1 : Cherche_Petite_Suite() : EndIf
;grande suite
range() : If Left(total2$,5) = "12345" : Score$ = Language$(33) : EndIf
range() : If Left(total2$,5) = "23456" : Score$ = Language$(33) : EndIf
If score$ = "" : score$ = Language$(35) : EndIf
; change couleur passe return en vert
If score$ = Language$(30) Or score$ = Language$(33) ;Or score$ = Language$(29) Or score$ = Language$(31)
ButtonTextColor(7, 350, 34, 56, 11, Language$(9), RGBA(0, 0, 0, 0), RGBA(135, 235, 125, 128), 8, 0, fon2$)
ButtonImageGadget(17, 350, 145, Cube_Size + 145, 30, ImageID(7), #PB_Button_Toggle)
Else
ButtonTextColor(7, 350, 34, 56, 11, Language$(9), RGBA(0, 0, 0, 0), RGBA(220, 220, 220, 128), 8, 0, fon2$)
ButtonImageGadget(17, 350, 145, Cube_Size + 145, 30, ImageID(7), #PB_Button_Toggle)
EndIf
EndProcedure
Procedure Score_des_Joueur_options(ns, Joueur)
If Lancer <= 3
; copie Resultat en Resultat2 pour le tri et garde position origine DES dans Resultat
CopyArray(Resultat(), Resultat2())
Total1$ = "" : Total2$ = ""
For i = 1 To ns : Total1$ = Total1$ + Str(Resultat2(i)) : Next i ; stock Resultat2 en Total1
SortArray(Resultat2(), #PB_Sort_Ascending , 1 , ns)
For i = 1 To ns : Total2$ = Total2$ + Str(Resultat2(i)) : Next i ; stock Resultat2 tri en Total2
Combinaisons()
SetWindowTitle(0, TitreW$ + version$ + Space(15) + Language$(7) + Str(Joueur)+Space(10) + Score$)
;##############################################################################################
;Creer des son.OGG avec des noms de scores
;Activer la Procedure vocal(chemin$, dicte$,tmp)
If lancer = 3 And Score$ = "" : Score$ = Language$(35) : EndIf
If SonActif = 1 ; score sonor
If score$ = Language$(36) : vocal(chemin$, "10.ogg", 400) : EndIf : If score$ = Language$(29) : vocal(chemin$, "20.ogg", 400) : EndIf: If score$ = Language$(30) : vocal(chemin$, "25.ogg", 700) : EndIf: If score$ = Language$(31) : vocal(chemin$, "30.ogg", 400) : EndIf: If score$ = Language$(32) : vocal(chemin$, "15.ogg", 400) : EndIf: If score$ = Language$(33) : vocal(chemin$, "40.ogg", 400) : EndIf
If Lancer = 3 : If score$ = Language$(34) : vocal(chemin$, "50.ogg", 400) : EndIf : EndIf
EndIf
EndIf
If score$ = Language$(34) : Lancer = 3 : EndIf ; valide le resultat
SetWindowTitle(0, TitreW$ + version$ + Space(15) + Language$(7) + Str(Joueur)+Space(10) + Score$)
ButtonTextColor(105, 92, 28, -10, 6, " " + Score$, Jcolor, RGBA(255, 255, 255, Cube_alpha), 12, 0, fon1$)
ButtonImageGadget(105, 248, 145, 100, 30, ImageID(105))
EndProcedure
Procedure Score_des_Joueur_List(ns, Joueur)
If Lancer <= 3
; copie Resultat en Resultat2 pour le tri et garde position origine DES dans Resultat
CopyArray(Resultat(), Resultat2())
Total1$ = "" : Total2$ = ""
For i = 1 To ns : Total1$ = Total1$ + Str(Resultat2(i)) : Next i ; stock Resultat2 en Total1
SortArray(Resultat2(), #PB_Sort_Ascending , 1 , ns)
For i = 1 To ns : Total2$ = Total2$ + Str(Resultat2(i)) : Next i ; stock Resultat2 tri en Total2
Combinaisons()
ScoreJoueur(Joueur) = ScoreJoueur(Joueur) + Val(Right(Score$, 2))
TourJoueur(Joueur) = TourJoueur(Joueur) + 1
If TourJoueur(Joueur) > 0
ScoreChance(Joueur) = ((scoreJoueur(Joueur) * 2) / TourJoueur(Joueur)) ; %
EndIf
AddGadgetItem (40, -1, " n°"+ Str(Joueur)+Chr(10)+Str(ScoreJoueur(Joueur))+Chr(10)+LTrim(Score$)+Chr(10)+Str(TourJoueur(Joueur))+Chr(10)+Str(ScoreChance(Joueur))+"%"+Chr(10)+Total1$, ImageID(Joueur+10))
;Affiche le dernier coup visible avec scoll ascenseur mis en bas
SetGadgetState(40, CountGadgetItems(40)-1)
AddElement(Ranglist())
Ranglist()\Num = Joueur
Ranglist()\Tours = TourJoueur(Joueur)
Ranglist()\Points = ScoreJoueur(Joueur)
SortStructuredList(Ranglist(), #PB_Sort_Descending, OffsetOf(yams\tours), TypeOf(yams\tours))
SortStructuredList(Ranglist(), #PB_Sort_Descending, OffsetOf(yams\Points), TypeOf(yams\Points))
ClearGadgetItems(42)
For i = 1 To 6
Filtre(i) = 1
Next i
ForEach Ranglist()
If Filtre(Ranglist()\Num) = 1 ; Filtre
Filtre(Ranglist()\Num) = 0 ; Filtre pas plus de 6 résultats dans le ListIconGadget()
AddGadgetItem(42, -1, "" +Ranglist()\Num+Chr(10)+""+Ranglist()\Tours+Chr(10)+""+Ranglist()\Points, ImageID(Ranglist()\Num + 10))
Lancer = 4
EndIf
Next
EndIf
If Lancer = 4
ButtonTextColor(8,350, 34, 66, 11, Language$(10) + Score$ + " -->", RGBA(0, 0, 0, 0), RGBA(220, 165, 195, 200), 8, 0, fon2$)
ButtonImageGadget(15,XPosition(1), 145, Cube_Size + 131, 30, ImageID(8), #PB_Button_Toggle)
ButtonTextColor(7, 350, 34, 56, 11, Language$(9), RGBA(0, 0, 0, 0), RGBA(220, 220, 220, 128), 8, 0, fon2$)
ButtonImageGadget(17, 350, 145, Cube_Size + 145, 30, ImageID(7), #PB_Button_Toggle)
Score$ = ""
For i = 0 To 600 Step 120 ; efface cadres cubes selectes
carre(jcolor, i)
SetGadgetState(20 + ((i/120)+1), 0)
Next i
EndIf
EndProcedure
Procedure DrawCube(numero, Nr.l)
;Author Procedure : NicTheQuick
Protected a.l, x.l, y.l, drhx.l, drhy.l
If Nr < 0 And Nr > 6 : ProcedureReturn #False : EndIf
If numero > 0
Restore Cube_Pos
a = Nr * (Nr - 1) / 2
While a : Read.l x : Read.l y : a - 1 : Wend
StartDrawing(ImageOutput(numero))
DrawingMode(0)
Box(0, 0, Cube_Size - 1, Cube_Size - 1, RGB(255, 255, 255))
drhx = Random(1)
drhy = Random(1)
For a = 1 To Nr
Read.l x : If drhx : x = 100 - x : EndIf
Read.l y : If drhy : y = 100 - y : EndIf
x = x * Cube_Size / 100
y = y * Cube_Size / 100
If ColorDes = 1 ; Points de Dés au couleur du jour
Circle(x + 2, y - 1, Cube_Points_r, RGB(110, 110, 110)) ;couleur de l'ombre
Circle(x, y, Cube_Points_r, $000000)
Else
Circle(x + 2, y - 1, Cube_Points_r, RGB(80, 80, 80)) ;couleur de l'ombre
Circle(x, y, Cube_Points_r, Jcolor)
EndIf
Next
StopDrawing()
ProcedureReturn numero
Else
ProcedureReturn #False
EndIf
DataSection
Cube_Pos:
Data.l 50, 50
Data.l 25, 25, 75, 75
Data.l 25, 25, 50, 50, 75, 75
Data.l 25, 25, 75, 25, 25, 75, 75, 75
Data.l 25, 25, 75, 25, 50, 50, 25, 75, 75, 75
Data.l 25, 25, 75, 25, 25, 50, 75, 50, 25, 75, 75, 75
EndDataSection
EndProcedure
Procedure des(numero)
If numero = 1
If GetGadgetState(20 + numero) = 0
Resultat(numero) = Random(5) + 1
DrawCube(numero, Resultat(numero))
ButtonImageGadget(numero, XPosition(numero), 10, Cube_Size + 5, Cube_Size + 5, ImageID(numero), #PB_Image_Border | #PB_Button_Toggle)
SetGadgetState(numero, ImageID(numero))
EndIf
total$ = Str(Resultat(1))
EndIf
If numero = 2
If GetGadgetState(20 + numero) = 0
Resultat(numero) = Random(5) + 1
DrawCube(numero, Resultat(numero))
ButtonImageGadget(numero, XPosition(numero), 10, Cube_Size + 5, Cube_Size + 5, ImageID(numero), #PB_Image_Border | #PB_Button_Toggle)
SetGadgetState(numero, ImageID(numero))
EndIf
total$ = Str(Resultat(1) + Resultat(2))
EndIf
If numero = 3
If GetGadgetState(20 + numero) = 0
Resultat(numero) = Random(5) + 1
DrawCube(numero, Resultat(numero))
ButtonImageGadget(numero, XPosition(numero), 10, Cube_Size + 5, Cube_Size + 5, ImageID(numero), #PB_Image_Border | #PB_Button_Toggle)
SetGadgetState(numero, ImageID(numero))
EndIf
total$ = Str(Resultat(1) + Resultat(2) + Resultat(3))
EndIf
If numero = 4
If GetGadgetState(20 + numero) = 0
Resultat(numero) = Random(5) + 1
DrawCube(numero, Resultat(numero))
ButtonImageGadget(numero, XPosition(numero), 10, Cube_Size + 5, Cube_Size + 5, ImageID(numero), #PB_Image_Border | #PB_Button_Toggle)
SetGadgetState(numero, ImageID(numero))
EndIf
total$ = Str(Resultat(1) + Resultat(2) + Resultat(3) + Resultat(4))
EndIf
If numero = 5
If GetGadgetState(20 + numero) = 0
Resultat(numero) = Random(5) + 1
DrawCube(numero, Resultat(numero))
ButtonImageGadget(numero, XPosition(numero), 10, Cube_Size + 5, Cube_Size + 5, ImageID(numero), #PB_Image_Border | #PB_Button_Toggle)
SetGadgetState(numero, ImageID(numero))
EndIf
total$ = Str(Resultat(1) + Resultat(2) + Resultat(3) + Resultat(4) + Resultat(5))
EndIf
EndProcedure
Procedure Partie_Lancer(n)
If Lancer <= 3
For i =1 To 5 : If Des_Fixe(i) = 0 : efface_des(i) : EndIf : Next i
For i = 1 To n : If Des_Fixe(i) = 0 : des(i) : EndIf : Next i
SetWindowTitle(0, TitreW$ + version$ + Space(15) + Language$(7) + Str(Joueur))
StateMenu(0) : SetMenuItemState(0, 5, GetMenuItemState(0, 5))
; CacheBouton() : HideGadget(15, #False)
Total = Resultat(1) + Resultat(2) + Resultat(3) + Resultat(4) + Resultat(5)
If Lancer = 1
ButtonTextColor(8,350, 34, 100, 11, Language$(11), RGBA(0, 0, 0, 0), RGBA(220, 250, 190, 100), 8, 0, fon2$)
ButtonImageGadget(15,XPosition(1), 145, Cube_Size + 131, 30, ImageID(8), #PB_Button_Toggle)
Score_des_Joueur_options(n, Joueur) : test_select()
EndIf
If Lancer = 2
ButtonTextColor(8,350, 34, 100, 11, Language$(12), RGBA(0, 0, 0, 0), RGBA(220, 250, 190, 100), 8, 0, fon2$)
ButtonImageGadget(15,XPosition(1), 145, Cube_Size + 131, 30, ImageID(8), #PB_Button_Toggle)
Score_des_Joueur_options(n, Joueur) : test_select()
EndIf
If Lancer = 3
ButtonTextColor(8,350, 34, 100, 11, Language$(13), RGBA(0, 0, 0, 0), RGBA(220, 250, 190, 100), 8, 0, fon2$)
ButtonImageGadget(15,XPosition(1), 145, Cube_Size + 131, 30, ImageID(8), #PB_Button_Toggle)
Score_des_Joueur_options(n, Joueur) : test_select()
Score_des_Joueur_List(n, Joueur)
EndIf
Lancer = Lancer + 1
EndIf
EndProcedure
Procedure Main_Joueur(main)
If GetGadgetState(main) = 1
carre(Jcolor, 120 * (main - 1))
Des_Fixe(main) = 0
SetGadgetState(20 + main, 0)
SetGadgetState(main, ImageID(main))
Else
carre(bcol, 120 * (main - 1))
Des_Fixe(main) = 1
SetGadgetState(20 + main, 1)
EndIf
EndProcedure
Procedure AfficheBoutons()
;// Sélection du Joueur listIcone
SetMenuItemBitmaps_(MenuID(0), 11 , #MF_BYCOMMAND, NewMenuIcon(11, Couleur(1)), 0)
SetMenuItemBitmaps_(MenuID(0), 12 , #MF_BYCOMMAND, NewMenuIcon(12, Couleur(2)), 0)
SetMenuItemBitmaps_(MenuID(0), 13 , #MF_BYCOMMAND, NewMenuIcon(13, Couleur(3)), 0)
SetMenuItemBitmaps_(MenuID(0), 14 , #MF_BYCOMMAND, NewMenuIcon(14, Couleur(4)), 0)
SetMenuItemBitmaps_(MenuID(0), 15 , #MF_BYCOMMAND, NewMenuIcon(15, Couleur(5)), 0)
SetMenuItemBitmaps_(MenuID(0), 16 , #MF_BYCOMMAND, NewMenuIcon(16, Couleur(6)), 0)
;// Sélection du Joueur
ButtonTextColor(51, 180, 40, 47, 11, Language$(1), Couleur(1), RGBA(220, 220, 220, Cube_alpha), 12, #PB_Font_Bold, fon1$)
ButtonImageGadget(51, 10, 333, 90, 34, ImageID(51), #PB_Button_Toggle):
ButtonTextColor(52, 180, 40, 47, 11, Language$(2), Couleur(2), RGBA(220, 220, 220, Cube_alpha), 12, #PB_Font_Bold, fon1$)
ButtonImageGadget(52, 109, 333, 90, 34, ImageID(52), #PB_Button_Toggle)
ButtonTextColor(53, 180, 40, 47, 11, Language$(3), Couleur(3), RGBA(220, 220, 220, Cube_alpha), 12, #PB_Font_Bold, fon1$)
ButtonImageGadget(53, 209, 333, 90, 34, ImageID(53), #PB_Button_Toggle)
ButtonTextColor(54, 180, 40, 47, 11, Language$(4), Couleur(4), RGBA(220, 220, 220, Cube_alpha), 12, #PB_Font_Bold, fon1$)
ButtonImageGadget(54, 309, 333, 90, 34, ImageID(54), #PB_Button_Toggle)
ButtonTextColor(55, 180, 40, 47, 11, Language$(5), Couleur(5), RGBA(220, 220, 220, Cube_alpha), 12, #PB_Font_Bold, fon1$)
ButtonImageGadget(55, 409, 333, 90, 34, ImageID(55), #PB_Button_Toggle)
ButtonTextColor(56, 180, 40, 47, 11, Language$(6), Couleur(6), RGBA(220, 220, 220, Cube_alpha), 12, #PB_Font_Bold, fon1$)
ButtonImageGadget(56, 509, 333, 90, 34, ImageID(56), #PB_Button_Toggle)
ButtonTextColor(105, 92, 28, -10, 6, "", RGBA(255, 255, 255, Cube_alpha), RGBA(255, 255, 255, Cube_alpha), 12, 0, fon1$)
ButtonImageGadget(105, 248, 145, 100, 30, ImageID(105))
EndProcedure
Procedure Reset_Efface_Tout()
; Efface les toutes parties et remise zero des scores
RandomizeArray(Couleur(),1,6)
ClearGadgetItems(40) : ClearGadgetItems(42)
For i = 1 To 6
Resultat(i) = 0 : Resultat2(i) = 0 : ScoreJoueur(i) = 0 : ScoreChance(i) = 0 : TourJoueur(i) = 0
Next i
For i = 1 To 5 ; Effece les dés
efface_des(i)
ButtonImageGadget(i, XPosition(i), 10, Cube_Size + 5, Cube_Size + 5, ImageID(i), #PB_Image_Border | #PB_Button_Toggle)
SetGadgetState(i, 1)
Next i
Total1$ = "" : Total2$ = ""
ForEach Ranglist()
Ranglist()\Num = 0
Ranglist()\Tours = 0
Ranglist()\Points = 0
Next
For i = 0 To 600 Step 120 ; Efface cadres cubes selectes
carre(jcolor, i)
Next i
Calcul1$ = "": Calcul2$ = "": Calcul3$ = "": Calcul4$ = "": Calcul5$ = "": Calcul6$ = ""
CheckBox_0() : StateMenu(1) : SetMenuItemState(0, 11, GetMenuItemState(0, 11)!1) : Col_Joueur(1) : Joueur = 1
For i = 1 To 6 : efface_des(i) : Next i : Lancer = 1
AfficheBoutons()
EndProcedure
If OpenWindow(1, 0, 0, 220, 260, "YAHTZEE - Kernadec - YAM'S", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
StickyWindow(1,#True)
ButtonGadget(0, 10, 10, 200, 30, "Français"): ButtonGadget(1, 10, 50, 200, 30, "Anglais"): ButtonGadget(2, 10, 90, 200, 30, "Allemand"): ButtonGadget(3, 10, 130, 200, 30, "Espagnol")
CheckBoxGadget(4, 8 , 190, 205, 12, "Ptsuite, Sequen4, Fortset4, Esquale4")
CheckBoxGadget(5, 8 , 207, 205, 12, "2 Paires, 2 pairs, 2 Paar, 2 Pares")
CheckBoxGadget(6, 8 , 224, 205, 12, "Point = Voix, Voice, Stimme, Voz")
GadgetToolTip(6, "Valeur phonétique , Phonetic Value, Lautwert, Valor fonético")
TextGadget(7, 86, 170,45,20,"Options")
TextGadget(8, 10, 242,220,20," version " + Left(version$,2) + " - aout MMXXVI")
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case 0 : lg = 1 :Break
Case 1 : lg = 2 : Break
Case 2 : lg = 3 : Break
Case 3 : lg = 4 : Break
Case 4 : If GetGadgetState(4) : SetGadgetState(4,1) : Pt_Suite = 1 : Else : SetGadgetState(4,0) : Pt_Suite = 0 : EndIf
Case 5 : If GetGadgetState(5) : SetGadgetState(5,1) : Topair = 1 : Else : SetGadgetState(5,0) : Topair = 0 : EndIf
Case 6 : If GetGadgetState(6) : SetGadgetState(6,1) : SonActif = 1 : Else : SetGadgetState(6,0) : SonActif = 0 : EndIf
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
EndIf
CloseWindow(1)
If lg = 0 : lg = 1 : EndIf
Country(lg)
;// adresse de telechargement de fichier son ogg pour la diction des pointsé
;// https://drive.google.com/file/d/1d92Pp6kI0QqeRo7SpAL_tIAI3SH-hE-L/view?usp=drive_link
If lg = 1 : Chemin$ = "Yahtzee_French\" : EndIf
If lg = 2 : Chemin$ = "Yahtzee_English\" : EndIf
If lg = 3 : Chemin$ = "Yahtzee_German\" : EndIf
If lg = 4 : Chemin$ = "Yahtzee_Spain\" : EndIf
;sauve langue traduction en fichiers externes
; CreateFile(0,"Langue"+ Str(lg) + ".txt")
; For u=1 To 35
; WriteStringN(0,Language$(u))
; Next u
; CloseFile(0)
;charge langue ; lecture du fichier de données- read file
; If ReadFile(0,"Langue"+ Str(lg) + ".txt") <> 0 : u = 1
; While Eof(0) = 0
; Language1$(u) = ReadString(0,#PB_Ascii)
; u + 1
; Wend
; CloseFile(0)
;EndIf
If OpenWindow(#Window_Des, 0, 0, Cube_Size + XPosition(numero) + 15, 294 + Cube_Size, TitreW$ + version$, #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If CreateMenu(0, WindowID(#Window_Des))
MenuTitle(Language$(27))
MenuItem(11, Language$(1) + Chr(9) + "/ Key 1") ;Cyan
MenuItem(12, Language$(2) + Chr(9) + "/ Key 2") ;Rouge
MenuItem(13, Language$(3) + Chr(9) + "/ Key 3") ;Vert
MenuItem(14, Language$(4) + Chr(9) + "/ Key 4") ;Blue
MenuItem(15, Language$(5) + Chr(9) + "/ Key 5") ;Jaune
MenuItem(16, Language$(6) + Chr(9) + "/ Key 6") ;violet
MenuBar()
MenuItem(17, Language$(15))
MenuItem(18, Language$(16))
MenuItem(25, Language$(32))
MenuItem(26, Language$(36))
MenuItem(23, Language$(17) + Chr(9) + "/ Ctrl Del")
MenuItem(24, Language$(18))
MenuTitle(" " + Language$(14))
EndIf
SetMenuItemState(0, 5, GetMenuItemState(0, 5))
SetMenuItemState(0, 11, GetMenuItemState(0, 11))
If ColorDes = 0
ColorDes = 0
SetMenuItemState(0,17,1)
Else
ColorDes = 1
SetMenuItemState(0,17,0)
EndIf
Paire$(1) = "11":Paire$(2) = "22":Paire$(3) = "33":Paire$(4) = "44":Paire$(5) = "55":Paire$(6) = "66"
SetMenuItemBitmaps_(MenuID(0), 17 , #MF_BYCOMMAND, NewMenuIcon(17, RGBA(150, 215, 255, 100)), 0)
SetMenuItemBitmaps_(MenuID(0), 18 , #MF_BYCOMMAND, NewMenuIcon(18, RGBA(150, 215, 255, 100)), 0)
ButtonTextColor(7, 350, 34, 56, 11, Language$(9), RGBA(0, 0, 0, 0), RGBA(220, 220, 220, 128), 8, 0, fon2$)
ButtonImageGadget(17, 350, 145, Cube_Size + 145, 30, ImageID(7), #PB_Button_Toggle)
AfficheBoutons()
ButtonTextColor(105, 92, 28, -10, 6, "", RGBA(255, 255, 255, Cube_alpha), RGBA(255, 255, 255, Cube_alpha), 12, 0, fon1$)
ButtonImageGadget(105, 248, 145, 100, 30, ImageID(105))
ButtonImageGadget(1, XPosition(1), 10, Cube_Size + 5, Cube_Size + 5, ImageID(1), #PB_Image_Border | #PB_Button_Toggle)
ButtonImageGadget(2, XPosition(2), 10, Cube_Size + 5, Cube_Size + 5, ImageID(2), #PB_Image_Border | #PB_Button_Toggle)
ButtonImageGadget(3, XPosition(3), 10, Cube_Size + 5, Cube_Size + 5, ImageID(3), #PB_Image_Border | #PB_Button_Toggle)
ButtonImageGadget(4, XPosition(4), 10, Cube_Size + 5, Cube_Size + 5, ImageID(4), #PB_Image_Border | #PB_Button_Toggle)
ButtonImageGadget(5, XPosition(5), 10, Cube_Size + 5, Cube_Size + 5, ImageID(5), #PB_Image_Border | #PB_Button_Toggle)
ButtonImageGadget(6, XPosition(6), 10, Cube_Size + 5, Cube_Size + 5, ImageID(6), #PB_Image_Border | #PB_Button_Toggle)
ButtonTextColor(8,350, 34, 100, 11, Language$(19), RGBA(0, 0, 0, 0), RGBA(220, 250, 190, 100), 8, 0, fon2$)
ButtonImageGadget(15,XPosition(1), 145, Cube_Size + 131, 30, ImageID(8), #PB_Button_Toggle)
CheckBoxGadget(21, XPosition(1) + 50 , 125, 30, 12, "F1")
CheckBoxGadget(22, XPosition(2) + 50 , 125, 30, 12, "F2")
CheckBoxGadget(23, XPosition(3) + 50 , 125, 30, 12, "F3")
CheckBoxGadget(24, XPosition(4) + 50 , 125, 30, 12, "F4")
CheckBoxGadget(25, XPosition(5) + 50 , 125, 30, 12, "F5")
CheckBoxGadget(26, XPosition(6) + 50 , 125, 12, 12, "") ; non key
ListIconGadget(40, 10, 180, WindowWidth(#Window_Des) - 169, 145, Language$(28), 48, #PB_ListIcon_GridLines)
AddGadgetColumn(40, 1, Language$(20), (WindowWidth(#Window_Des) - 12) / 8)
AddGadgetColumn(40, 2, Language$(21), (WindowWidth(#Window_Des) - 12) / 7)
AddGadgetColumn(40, 3, Language$(22), (WindowWidth(#Window_Des) - 12) / 8)
AddGadgetColumn(40, 4, Language$(23), (WindowWidth(#Window_Des) - 42) / 9)
AddGadgetColumn(40, 5, Language$(24), (WindowWidth(#Window_Des) - 12) / 8)
ListIconGadget(42, 450, 180, 150, 145, Language$(28), 49, #PB_ListIcon_GridLines)
AddGadgetColumn(42, 1, Language$(25), 49)
AddGadgetColumn(42, 2, Language$(26), 48)
Col_Joueur(Joueur)
SetWindowTitle(0, TitreW$ + version$ + Space(15) + Language$(7) + Str(Joueur))
Joueur = 1
If Pt_Suite = 1 : SetMenuItemState(0,25,1) : Else : SetMenuItemState(0,25,0) : EndIf
If ToPair = 1 : SetMenuItemState(0,26,1) : Else : SetMenuItemState(0,26,0) : EndIf
If SonActif = 1 : SetMenuItemState(0,18,1) : Else : SetMenuItemState(0,18,0) : EndIf
AddKeyboardShortcut(#Window_Des, #PB_Shortcut_Escape, 27) ; 27 = Valeur Touche Escape
AddKeyboardShortcut(#Window_Des, #PB_Shortcut_Space, 32) ; 32 = Valeur Touche Espace
AddKeyboardShortcut(#Window_Des, #PB_Shortcut_1, 101) ; 1 = Valeur Touche 1
AddKeyboardShortcut(#Window_Des, #PB_Shortcut_Pad1, 111) ; 1 = Valeur Touche 1
AddKeyboardShortcut(#Window_Des, #PB_Shortcut_2, 102) ; 2 = Valeur Touche 2
AddKeyboardShortcut(#Window_Des, #PB_Shortcut_Pad2, 112) ; 2 = Valeur Touche 2
AddKeyboardShortcut(#Window_Des, #PB_Shortcut_3, 103) ; 3 = Valeur Touche 3
AddKeyboardShortcut(#Window_Des, #PB_Shortcut_Pad3, 113) ; 2 = Valeur Touche 2
AddKeyboardShortcut(#Window_Des, #PB_Shortcut_4, 104) ; 4 = Valeur Touche 4
AddKeyboardShortcut(#Window_Des, #PB_Shortcut_Pad4, 114) ; 2 = Valeur Touche 2
AddKeyboardShortcut(#Window_Des, #PB_Shortcut_5, 105) ; 5 = Valeur Touche 5
AddKeyboardShortcut(#Window_Des, #PB_Shortcut_Pad5, 115) ; 2 = Valeur Touche 2
AddKeyboardShortcut(#Window_Des, #PB_Shortcut_6, 106) ; 6 = Valeur Touche 6
AddKeyboardShortcut(#Window_Des, #PB_Shortcut_Pad6, 116) ; 2 = Valeur Touche 2
AddKeyboardShortcut(#Window_Des, #PB_Shortcut_F1, 121) ; 2 = Valeur Touche 121
AddKeyboardShortcut(#Window_Des, #PB_Shortcut_F2, 122) ; 2 = Valeur Touche 122
AddKeyboardShortcut(#Window_Des, #PB_Shortcut_F3, 123) ; 2 = Valeur Touche 123
AddKeyboardShortcut(#Window_Des, #PB_Shortcut_F4, 124) ; 2 = Valeur Touche 124
AddKeyboardShortcut(#Window_Des, #PB_Shortcut_F5, 125) ; 2 = Valeur Touche 125
AddKeyboardShortcut(#Window_Des, #PB_Shortcut_Return, 130) ; 32 = Valeur Touche Espace
AddKeyboardShortcut(#Window_Des, #PB_Shortcut_Control | #PB_Shortcut_Delete, 23) ; Raccourci clavier control delete)
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Menu ; Un élément du menu a été sélectionné
Select EventMenu() ; On recupère le numéro de cet élement...
Case 11, 101, 111 : CheckBox_0() : StateMenu(1) : SetMenuItemState(0, 11, GetMenuItemState(0, 11)!1) : Col_Joueur(1) : Joueur = 1
For i = 1 To 6 : efface_des(i) : Next i : Lancer = 1
Case 12, 102, 112 : CheckBox_0() : StateMenu(1) : SetMenuItemState(0, 12, GetMenuItemState(0, 12)!1) : Col_Joueur(2) : Joueur = 2
For i = 1 To 6 : efface_des(i) : Next i : Lancer = 1
Case 13, 103, 113 : CheckBox_0() : StateMenu(1) : SetMenuItemState(0, 13, GetMenuItemState(0, 13)!1) : Col_Joueur(3) : Joueur = 3
For i = 1 To 6 : efface_des(i) : Next i : Lancer = 1
Case 14, 104, 114 : CheckBox_0() : StateMenu(1) : SetMenuItemState(0, 14, GetMenuItemState(0, 14)!1) : Col_Joueur(4) : Joueur = 4
For i = 1 To 6 : efface_des(i) : Next i : Lancer = 1
Case 15, 105, 115 : CheckBox_0() : StateMenu(1) : SetMenuItemState(0, 15, GetMenuItemState(0, 15)!1) : Col_Joueur(5) : Joueur = 5
For i = 1 To 6 : efface_des(i) : Next i : Lancer = 1
Case 16, 106, 116 : CheckBox_0() : StateMenu(1) : SetMenuItemState(0, 16, GetMenuItemState(0, 16)!1) : Col_Joueur(6) : Joueur = 6
For i = 1 To 6 : efface_des(i) : Next i : Lancer = 1
Case 17
If ColorDes = 0 : ColorDes = 1 : SetMenuItemState(0,17,0): Else : ColorDes = 0 : SetMenuItemState(0,17,1): EndIf
Case 18
If SonActif = 0 : SonActif = 1 : SetMenuItemState(0,18,1): Else : SonActif = 0 : SetMenuItemState(0,18,0): EndIf
Case 21
If GetGadgetState(21) = 0 : SetGadgetState(21, 1): EndIf
Case 23 : Reset_Efface_Tout() ; efface les toutes parties et remise Z des scores
Case 24 : End
Case 25
If Pt_Suite = 0 : Pt_Suite = 1 : SetMenuItemState(0,25,1) : Else : Pt_Suite = 0 : SetMenuItemState(0,25,0) : EndIf
Case 26
If Topair = 0 : ToPair = 1 : SetMenuItemState(0,26,1) : Else : ToPair = 0 : SetMenuItemState(0,26,0) : EndIf
Case 32 : Partie_Lancer(5) ;Yams
; ####################### touche F1 à F5
Case 121 : If Des_Fixe(1) = 0 : Des_Fixe(1) = 1 : SetGadgetState(21, 1) : carre(bcol, 0) : Else : Des_Fixe(1) = 0 : SetGadgetState(21, 0) : carre(Jcolor, 0) : EndIf
Case 122 : If Des_Fixe(2) = 0 : Des_Fixe(2) = 1 : SetGadgetState(22, 1) : carre(bcol, 120) : Else : Des_Fixe(2) = 0 : SetGadgetState(22, 0) : carre(Jcolor, 120) : EndIf
Case 123 : If Des_Fixe(3) = 0 : Des_Fixe(3) = 1 : SetGadgetState(23, 1) : carre(bcol, 240) : Else : Des_Fixe(3) = 0 : SetGadgetState(23, 0) : carre(Jcolor, 240) : EndIf
Case 124 : If Des_Fixe(4) = 0 : Des_Fixe(4) = 1 : SetGadgetState(24, 1) : carre(bcol, 360) : Else : Des_Fixe(4) = 0 : SetGadgetState(24, 0) : carre(Jcolor, 360) : EndIf
Case 125 : If Des_Fixe(5) = 0 : Des_Fixe(5) = 1 : SetGadgetState(25, 1) : carre(bcol, 480) : Else : Des_Fixe(5) = 0 : SetGadgetState(25, 0) : carre(Jcolor, 480) : EndIf
;Return Passer Valider
Case 130
If Lancer < = 3: Score_des_Joueur_List(numero, Joueur): EndIf
Lancer = 4
EndSelect
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Gadget
Select EventGadget()
Case 15 : Partie_Lancer(5) ;YAMs
Case 17 ; Passe = termine ce tour
ButtonTextColor(7, 350, 34, 56, 11, Language$(9), RGBA(0, 0, 0, 0), RGBA(220, 220, 220, 255), 8, 0, fon2$)
ButtonImageGadget(17, 350, 145, Cube_Size + 145, 30, ImageID(7), #PB_Button_Toggle)
If Lancer < = 3: Score_des_Joueur_List(numero, Joueur): EndIf
Lancer = 4
Case 1 : Main_Joueur(1)
Case 2 : Main_Joueur(2)
Case 3 : Main_Joueur(3)
Case 4 : Main_Joueur(4)
Case 5 : Main_Joueur(5)
Case 6 : Main_Joueur(6)
Case 51 : CheckBox_0() : StateMenu(1) : SetMenuItemState(0, 11, GetMenuItemState(0, 11)!1) : Col_Joueur(1) : Joueur = 1
For i = 1 To 6 : efface_des(i) : Next i : Lancer = 1
Case 52 : CheckBox_0() : StateMenu(1) : SetMenuItemState(0, 12, GetMenuItemState(0, 12)!1) : Col_Joueur(2) : Joueur = 2
For i = 1 To 6 : efface_des(i) : Next i : Lancer = 1
Case 53 : CheckBox_0() : StateMenu(1) : SetMenuItemState(0, 13, GetMenuItemState(0, 13)!1) : Col_Joueur(3) : Joueur = 3
For i = 1 To 6 : efface_des(i) : Next i : Lancer = 1
Case 54 : CheckBox_0() : StateMenu(1) : SetMenuItemState(0, 14, GetMenuItemState(0, 14)!1) : Col_Joueur(4) : Joueur = 4
For i = 1 To 6 : efface_des(i) : Next i : Lancer = 1
Case 55 : CheckBox_0() : StateMenu(1) : SetMenuItemState(0, 15, GetMenuItemState(0, 15)!1) : Col_Joueur(5) : Joueur = 5
For i = 1 To 6 : efface_des(i) : Next i : Lancer = 1
Case 56: CheckBox_0() : StateMenu(1) : SetMenuItemState(0, 16, GetMenuItemState(0, 16)!1) : Col_Joueur(6) : Joueur = 6
For i = 1 To 6 : efface_des(i) : Next i : Lancer = 1
EndSelect
EndSelect
ForEver
CloseWindow(0)
EndIf