Voir règles du Yams Yahtzee sur le net ou Wikipédia
A partir d'une procédure dessin d'un "Dés créé par NicTheQuick"
qui se trouve dans les exemples de Code Archive
j'ai ajouté la possibilité d'avoir un nombre de Dés au choix
et jusqu' a 5 dés pour le Yam's avec 3 essais par joueurs.
je précise que ce code fonctionne sur la version demo de PureBasic 6.40
puisqu'il n'utilise aucun API Windows.
new version 2.2
Ajout au menu d'une remise a zéro des valeurs et des parties en cours.
new version 2.3
Gestion des versions PB 5.73 à PB 6.40 pour CreateImage() et sa transparence
avec le test : #PB_Compiler_Version
Désolé; je n'ai pas teste avec les versions inferieurs à PB 5.73
new version 4, celle ci seras probablement la dernière du 5/8/2026
plusieurs ajustements notamment le choix du langage pour l'interface..
ps: dans le dernier post se trouve la même version plus compacte en moins de 800 lignes
pour PureBasic Démo qui peut être compilée.
ps: v.5 - Ajout d un mode aléatoire des couleurs de joueurs au lancement du jeu.
modification du jeu maintenant les 2 paires 10points et les suite mineures 15 points
sont en option ainsi que la diction de points. voici un lien pour les voix.
https://drive.google.com/file/d/1I5yLdB ... rive_link
Cordialement
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 avec option petites-suites et 2 paires et un mode vocal
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 Paare 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 : 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()
; 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 Pt_Suite = 1 : Cherche_Petite_Suite() : 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
;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 sons.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$(32) : vocal(Chemin$, "15.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$(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, "Points , 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 21
If GetGadgetState(21) = 0 : SetGadgetState(21, 1): EndIf
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 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