Petit Jeu YAM's ou Yahtzee

Programmation avancée de jeux en PureBasic
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Petit Jeu YAM's ou Yahtzee

Message par kernadec »

bjr à tous
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.
Cordialement

Code : Tout sélectionner

;(Yams, Yahtzee  PB 573 kernadec Mai 2021)
; mode 1,2,3,4,5,6 Dés... 

UsePNGImageDecoder()

EnableExplicit

Enumeration 
  #Window_Des
EndEnumeration

Global EventID.l, Cube_Size.l, Cube_Points_r.l,ndes.l, i, a.l, c.l
Global Cube_Img.l, numero.l = 6, essai = 1, Joueurs.l, Jco.l, total$
Global Dim Resultat(6), Dim XPosition(6)

Cube_Size = 105 
Cube_Points_r = Cube_Size / 10 

CreateImage(1, Cube_Size, Cube_Size, 24 , $FFFFFF) 
CreateImage(2, Cube_Size, Cube_Size, 24 , $FFFFFF)
CreateImage(3, Cube_Size, Cube_Size, 24 , $FFFFFF)
CreateImage(4, Cube_Size, Cube_Size, 24 , $FFFFFF) 
CreateImage(5, Cube_Size, Cube_Size, 24 , $FFFFFF)
CreateImage(6, Cube_Size, Cube_Size, 24 , $FFFFFF)

XPosition(1) =  10
XPosition(2) = 130
XPosition(3) = 250
XPosition(4) = 370
XPosition(5) = 490
XPosition(6) = 610

Procedure Col_Joueur(c)
  If c = 1 : Jco = #Cyan   : EndIf 
  If c = 2 : Jco = #Red    : EndIf 
  If c = 3 : Jco = #Green  : EndIf 
  If c = 4 : Jco = #Blue   : EndIf 
  If c = 5 : Jco = #Yellow : EndIf 
  If c = 6 : Jco = #Black  : EndIf
  SetWindowColor(#Window_Des, Jco)
EndProcedure

Procedure CacheBouton()
  For i = 11 To  16 : HideGadget(i, #True) : 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 = 8 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(numero)
  StartDrawing(ImageOutput(numero))  
  DrawingMode(0) 
  Box(0, 0, Cube_Size - 1, Cube_Size - 1, $FFFFFF) 
  StopDrawing()  
  SetGadgetState(numero, ImageID(numero))
  SetWindowTitle(0,"Lance " + Str(numero) + " Des " + "ESSAI= 0" + "" )
  SetGadgetText(10 + numero, "Lance " + Str(numero) + " Dés") 
EndProcedure

Procedure DrawCube(numero, Nr.l) 
; Procedure cube  Autheur: NicTheQuick (updated for PB 4.00 by Andre) 
  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) 
    RoundBox(0, 0, Cube_Size - 1, Cube_Size - 1, 20, 20, $FFFFFF) 
    
    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 
      
      Circle(x, y, Cube_Points_r, $000000) 
    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
    ResizeWindow(#Window_Des, #PB_Ignore, #PB_Ignore, Cube_Size + XPosition(numero) + 15, 60 + Cube_Size)
    Resultat(1) = Random(5) + 1
    total$ = Str(Resultat(1))
    DrawCube(numero, Resultat(1))  
    SetGadgetState(numero, ImageID(numero)) 
  EndIf
  
  If numero = 2
    ResizeWindow(#Window_Des, #PB_Ignore, #PB_Ignore, Cube_Size + XPosition(numero) + 15, 60 + Cube_Size)
    Resultat(2) = Random(5) + 1
    total$ = Str(Resultat(1) + Resultat(2))
    DrawCube(numero, Resultat(2)) 
    SetGadgetState(numero, ImageID(numero))
  EndIf
  
  If numero = 3
    ResizeWindow(#Window_Des, #PB_Ignore, #PB_Ignore, Cube_Size + XPosition(numero) + 15, 60 + Cube_Size)
    Resultat(3) = Random(5) + 1
    total$ = Str(Resultat(1) + Resultat(2) + Resultat(3))
    DrawCube(numero, Resultat(3))  
    SetGadgetState(numero, ImageID(numero)) 
  EndIf
  
  If numero = 4
    ResizeWindow(#Window_Des, #PB_Ignore, #PB_Ignore, Cube_Size + XPosition(numero) + 15, 60 + Cube_Size)
    Resultat(4) = Random(5) + 1
    total$ = Str(Resultat(1) + Resultat(2) + Resultat(3) + Resultat(4))
    DrawCube(numero, Resultat(4))  
    SetGadgetState(numero, ImageID(numero)) 
  EndIf
  
  If numero = 5
    ResizeWindow(#Window_Des, #PB_Ignore, #PB_Ignore, Cube_Size + XPosition(numero) + 15, 60 + Cube_Size)
    Resultat(5) = Random(5) + 1
    total$ = Str(Resultat(1) + Resultat(2) + Resultat(3) + Resultat(4) + Resultat(5))
    DrawCube(numero, Resultat(5))  
    SetGadgetState(numero, ImageID(numero))
  EndIf
  
  If numero = 6
    ResizeWindow(#Window_Des, #PB_Ignore, #PB_Ignore, Cube_Size + XPosition(numero) + 15, 60 + Cube_Size)
    Resultat(6) = Random(5) + 1
    total$ = Str(Resultat(1) + Resultat(2) + Resultat(3) + Resultat(4) + Resultat(5) + Resultat(6))
    DrawCube(numero, Resultat(6))  
    SetGadgetState(numero, ImageID(numero)) 
  EndIf
  
EndProcedure

;-- Début Prg

If OpenWindow(#Window_Des, 0, 0, (Cube_Size + 10) + 615, 60 + Cube_Size, "Lancer de Des" , #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
  
  If CreateMenu(0, WindowID(#Window_Des))   
    MenuTitle("Edition")
    MenuItem(1, "1 Des")
    MenuItem(2, "2 Des")
    MenuItem(3, "3 Des")
    MenuItem(4, "4 Des")
    MenuItem(5, "5 Des")
    MenuItem(6, "6 Des")
    MenuBar() 
    MenuItem(7, "Quit")
    MenuTitle("N° Joueur")
    MenuItem(8,  "Joueur n°1")  ;Blanc
    MenuItem(9,  "Joueur n°2")  ;Rouge
    MenuItem(10, "Joueur n°3")  ;Vert 
    MenuItem(11, "Joueur n°4")  ;Blue 
    MenuItem(12, "Joueur n°5")  ;Jaune
    MenuItem(13, "Joueur n°6")  ;Noir 
    
  EndIf
  
  SetMenuItemState(0,6,GetMenuItemState(0,6)!1)
  SetMenuItemState(0,8,GetMenuItemState(0,8)!1)
  
  SetMenuItemBitmaps_(MenuID(0),  8  , #MF_BYCOMMAND, NewMenuIcon( 8,#Cyan)  , 0) 
  SetMenuItemBitmaps_(MenuID(0),  9  , #MF_BYCOMMAND, NewMenuIcon( 9,#Red)   , 0) 
  SetMenuItemBitmaps_(MenuID(0), 10  , #MF_BYCOMMAND, NewMenuIcon(10,#Green) , 0) 
  SetMenuItemBitmaps_(MenuID(0), 11  , #MF_BYCOMMAND, NewMenuIcon(11,#Blue)  , 0) 
  SetMenuItemBitmaps_(MenuID(0), 12  , #MF_BYCOMMAND, NewMenuIcon(12,#Yellow), 0) 
  SetMenuItemBitmaps_(MenuID(0), 13  , #MF_BYCOMMAND, NewMenuIcon(13,#Black) , 0) 
  
  
  ImageGadget(1, XPosition(1), 5, Cube_Size, Cube_Size + 20, ImageID(1), #PB_Image_Border)
  ImageGadget(2, XPosition(2), 5, Cube_Size, Cube_Size + 20, ImageID(2), #PB_Image_Border) 
  ImageGadget(3, XPosition(3), 5, Cube_Size, Cube_Size + 20, ImageID(3), #PB_Image_Border) 
  ImageGadget(4, XPosition(4), 5, Cube_Size, Cube_Size + 20, ImageID(4), #PB_Image_Border) 
  ImageGadget(5, XPosition(5), 5, Cube_Size, Cube_Size + 20, ImageID(5), #PB_Image_Border) 
  ImageGadget(6, XPosition(6), 5, Cube_Size, Cube_Size + 20, ImageID(6), #PB_Image_Border) 
  
  
  ButtonGadget(11, XPosition(1), 120, Cube_Size + 5      , 20, "Lancer 1 Dés") : HideGadget(11, #True)
  ButtonGadget(12, XPosition(1), 120, Cube_Size + 5 + 120, 20, "Lancer 2 Dés") : HideGadget(12, #True) 
  ButtonGadget(13, XPosition(1), 120, Cube_Size + 5 + 240, 20, "Lancer 3 Dés") : HideGadget(13, #True) 
  ButtonGadget(14, XPosition(1), 120, Cube_Size + 5 + 360, 20, "Lancer 4 Dés") : HideGadget(14, #True) 
  ButtonGadget(15, XPosition(1), 120, Cube_Size + 5 + 480, 20, "Lancer 5 Dés") : HideGadget(15, #True) 
  ButtonGadget(16, XPosition(1), 120, Cube_Size + 5 + 600, 20, "Lancer 6 Dés") ; defaut
  
  SetWindowColor(#Window_Des, #Cyan) 
  SetWindowTitle(0,"Lance " + Str(numero) + " Des " + "ESSAI= 0" + "" )
  
  Repeat 
    
    EventID = WaitWindowEvent() 
    
    Select EventID 
        
      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 1 : numero = 1 : ResizeWindow(#Window_Des, #PB_Ignore, #PB_Ignore, Cube_Size + XPosition(1) + 15, 60 + Cube_Size)
            StateMenu(0) : SetMenuItemState(0,1,GetMenuItemState(0,1)!1) : CacheBouton() : HideGadget(11, #False)
            For i =1 To 6 : efface_des(i) : Next i : SetWindowTitle(0," 1 Des = " + "")
          Case 2 : numero = 2 : ResizeWindow(#Window_Des, #PB_Ignore, #PB_Ignore, Cube_Size + XPosition(2) + 15, 60 + Cube_Size)
            StateMenu(0) : SetMenuItemState(0,2,GetMenuItemState(0,2)!1) : CacheBouton() : HideGadget(12, #False)
            For i =1 To 6 : efface_des(i) : Next i : SetWindowTitle(0,"Lancer de 2 Des ...Total =  " + "")
          Case 3 : numero = 3 : ResizeWindow(#Window_Des, #PB_Ignore, #PB_Ignore, Cube_Size + XPosition(3) + 15, 60 + Cube_Size)
            StateMenu(0) : SetMenuItemState(0,3,GetMenuItemState(0,3)!1) : CacheBouton() : HideGadget(13, #False)
            For i =1 To 6 : efface_des(i) : Next i : SetWindowTitle(0,"Lancer de 3 Des ...Total =  " + "")
          Case 4 : numero = 4 : ResizeWindow(#Window_Des, #PB_Ignore, #PB_Ignore, Cube_Size + XPosition(4) + 15, 60 + Cube_Size)
            StateMenu(0) : SetMenuItemState(0,4,GetMenuItemState(0,4)!1) : CacheBouton() : HideGadget(14, #False)
            For i =1 To 6 : efface_des(i) : Next i : SetWindowTitle(0,"Lancer de 4 Des ...Total =  " + "")
          Case 5 : numero = 5 : ResizeWindow(#Window_Des, #PB_Ignore, #PB_Ignore, Cube_Size + XPosition(5) + 15, 60 + Cube_Size)
            StateMenu(0) : SetMenuItemState(0,5,GetMenuItemState(0,5)!1) : CacheBouton() : HideGadget(15, #False)
            For i =1 To 6 : efface_des(i) : Next i : SetWindowTitle(0,"Lancer de 5 Des ...Total =  " + "")
          Case 6 : numero = 6 : ResizeWindow(#Window_Des, #PB_Ignore, #PB_Ignore, Cube_Size + XPosition(6) + 15, 60 + Cube_Size)
            StateMenu(0) : SetMenuItemState(0,6,GetMenuItemState(0,6)!1) : CacheBouton() : HideGadget(16, #False)
            For i =1 To 6 : efface_des(i) : Next i : SetWindowTitle(0,"Lancer de 6 Des ...Total =  " + "")
          Case 7 : End
          Case 8  : StateMenu(1) : SetMenuItemState(0, 8,GetMenuItemState(0, 8)!1) : Col_Joueur(1) 
            For i = 1 To 6 : efface_des(i) : Next i : essai = 1
          Case 9  : StateMenu(1) : SetMenuItemState(0, 9,GetMenuItemState(0, 9)!1) : Col_Joueur(2) 
            For i = 1 To 6 : efface_des(i) : Next i : essai = 1
          Case 10 : StateMenu(1) : SetMenuItemState(0,10,GetMenuItemState(0,10)!1) : Col_Joueur(3) 
            For i = 1 To 6 : efface_des(i) : Next i : essai = 1
          Case 11 : StateMenu(1) : SetMenuItemState(0,11,GetMenuItemState(0,11)!1) : Col_Joueur(4) 
            For i = 1 To 6 : efface_des(i) : Next i : essai = 1
          Case 12 : StateMenu(1) : SetMenuItemState(0,12,GetMenuItemState(0,12)!1) : Col_Joueur(5) 
            For i = 1 To 6 : efface_des(i) : Next i : essai = 1
          Case 13 : StateMenu(1) : SetMenuItemState(0,13,GetMenuItemState(0,13)!1) : Col_Joueur(6) 
            For i = 1 To 6 : efface_des(i) : Next i : essai = 1 
        EndSelect 
        
      Case #PB_Event_CloseWindow 
        
        Break 
        
      Case #PB_Event_Gadget 
        Select EventGadget() 
          Case 11
            If essai <= 3  
              For i =1 To 6 : efface_des(i) : Next i
              des(1)
              SetWindowTitle(0,"1 Des " + "Es=" + Str(essai) + " =" + total$ )
              StateMenu(0) : SetMenuItemState(0,1,GetMenuItemState(0,1)!1)
              CacheBouton() : HideGadget(11, #False)
              essai = essai + 1
            Else
              SetGadgetText(11, "3 Essai = Terminé")
            EndIf
          Case 12 
            If essai <= 3  
              For i =1 To 6 : efface_des(i) : Next i
              des(1) : des(2)
              SetWindowTitle(0,"Lance 2 Des " + "ESSAI=" + Str(essai) + " Total=" + total$ )
              StateMenu(0) : SetMenuItemState(0,2,GetMenuItemState(0,2)!1)
              CacheBouton() : HideGadget(12, #False)
              essai = essai + 1
            Else
              SetGadgetText(12, "3 Essai = Terminé")
            EndIf
          Case 13 
            If essai <= 3  
              For i =1 To 6 : efface_des(i) : Next i
              des(1) : des(2) : des(3)
              SetWindowTitle(0,"Lance 3 Des " + "ESSAI=" + Str(essai) + " Total=" + total$ )
              StateMenu(0) : SetMenuItemState(0,3,GetMenuItemState(0,3)!1)
              CacheBouton() : HideGadget(13, #False)
              essai = essai + 1
            Else
              SetGadgetText(13, "3 Essai = Terminé")
            EndIf
          Case 14 
            If essai <= 3 
              For i =1 To 6 : efface_des(i) : Next i
              des(1) : des(2) : des(3) : des(4)
              SetWindowTitle(0,"Lance 4 Des " + "ESSAI=" + Str(essai) + " Total=" + total$ )
              StateMenu(0) : SetMenuItemState(0,4,GetMenuItemState(0,4)!1)
              CacheBouton() : HideGadget(14, #False)
              essai = essai + 1
            Else
              SetGadgetText(14, "3 Essai = Terminé")
            EndIf
          Case 15 
            If essai <= 3 
              For i =1 To 6 : efface_des(i) : Next i
              des(1) : des(2) : des(3) : des(4) : des(5)
              SetWindowTitle(0,"Lance 5 Des " + "ESSAI=" + Str(essai) + " Total=" + total$ )
              StateMenu(0) : SetMenuItemState(0,5,GetMenuItemState(0,5)!1)
              CacheBouton() : HideGadget(15, #False) 
              essai = essai + 1
            Else
              SetGadgetText(15, "3 Essai = Terminé")
            EndIf
          Case 16 
            If essai <= 3 
              For i =1 To 6 : efface_des(i) : Next i
              des(1) : des(2) : des(3) : des(4) : des(5) : des(6)
              SetWindowTitle(0,"Lance 6 Des " + "ESSAI=" + Str(essai) + " Total=" + total$ )
              StateMenu(0) : SetMenuItemState(0,6,GetMenuItemState(0,6)!1)
              CacheBouton() : HideGadget(16, #False)
              essai = essai + 1
            Else
              SetGadgetText(16, "3 Essai = Terminé")
            EndIf
        EndSelect 
    EndSelect 
  ForEver 
  CloseWindow(0)
EndIf
Dernière modification par kernadec le mar. 10/janv./2023 7:40, modifié 8 fois.
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Petits jeux de Dés YAMS Etc..

Message par Ar-S »

Salut,
ça plante des que je lance les dés...

[ERREUR] Ligne: 87
[ERREUR] Erreur de lecture des données: plus de données à lire.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: Petits jeux de Dés YAMS Etc..

Message par kernadec »

bjr Ar-S
code mis à jours
Merci du retour, oops , je ne l'avais pas essayé en PB 573 64bits
Les read.l avaient besoin du type de données Data.l
avec PB 573 32bits je n'avait pas eu ce soucis :?
A l'occasion, je mettrais une Listview pour afficher les données
de chaque joueurs pour permettre de visualiser la partie..
Cordialement
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: Petits jeux de Dés YAMS Etc..

Message par kernadec »

bsr à tous
j'ai revisité mon code pour ajouter un ListIconGadget() les scores pour chaque joueurs jusqu'a 6
à partir de ce code on peut faire pleins de jeux de Dés :mrgreen:
ça amuseras probablement les enfants :mrgreen:
Cordialement

ps: Remis à jour car il y avait une différence dans la taille de fenêtre et des Gadgets entre Seven et XP :?

Code : Tout sélectionner

; German forum: http://www.purebasic.fr/german/viewtopic.php?t=3249&start=10
; Author: NicTheQuick (updated for PB 4.00 by Andre) 
;(YAMS PB 573 kernadec Mai 2021) 
;avec procedure des de NicTheQuickn  
; mode   Y A M S

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
Global numero.l, Lancer.l = 1, Joueur.l, Jco, Jcolor.l, i, u, a.l, n.l, ne.l, ns.l,m$
Global Total, Total$, Total1$, Total2$, Total3$, Score$, result1.l
Global Calcul1$, Calcul2$, Calcul3$, Calcul4$, Calcul5$, Calcul6$ 
Global Dim Resultat(6), Dim  Resultat2(6), Dim XPosition(6), Dim Des_Fixe(6)
Global Dim TourJoueur(6), Dim RangJoueur$(6), Dim Filtre(6) 
Global Dim ScoreJoueur(6), Dim ScoreChance(6)


numero = 5   ; Mode 5 Dés
Joueur = 1
Cube_Size = 105 
Cube_Points_r = Cube_Size / 10 

Cube_alpha = 0
CreateImage(0, Cube_Size, Cube_Size, 32 , RGBA(255, 255, 255, Cube_alpha))
CreateImage(1, Cube_Size, Cube_Size, 32 , RGBA(255, 255, 255, Cube_alpha))
CreateImage(2, Cube_Size, Cube_Size, 32 , RGBA(255, 255, 255, Cube_alpha))
CreateImage(3, Cube_Size, Cube_Size, 32 , RGBA(255, 255, 255, Cube_alpha))
CreateImage(4, Cube_Size, Cube_Size, 32 , RGBA(255, 255, 255, Cube_alpha)) 
CreateImage(5, Cube_Size, Cube_Size, 32 , RGBA(255, 255, 255, Cube_alpha))
CreateImage(6, Cube_Size, Cube_Size, 32 , RGBA(255, 255, 255, Cube_alpha))

Cube_alpha = 30
CreateImage(21, Cube_Size, Cube_Size, 32 , RGBA(255, 255, 255, Cube_alpha))
CreateImage(22, Cube_Size, Cube_Size, 32 , RGBA(255, 255, 255, Cube_alpha))
CreateImage(23, Cube_Size, Cube_Size, 32 , RGBA(255, 255, 255, Cube_alpha))
CreateImage(24, Cube_Size, Cube_Size, 32 , RGBA(255, 255, 255, Cube_alpha)) 
CreateImage(25, Cube_Size, Cube_Size, 32 , RGBA(255, 255, 255, Cube_alpha))
CreateImage(26, Cube_Size, Cube_Size, 32 , RGBA(255, 255, 255, Cube_alpha))

Cube_alpha = 0

CreateImage(11, 15, 15, 24 , RGBA(0, 255, 255, 0)); #Cyan) ;
CreateImage(12, 15, 15, 24 , #Red)
CreateImage(13, 15, 15, 24 , #Green)
CreateImage(14, 15, 15, 24 , #Blue) 
CreateImage(15, 15, 15, 24 , #Yellow)
CreateImage(16, 15, 15, 24 , #Magenta)

XPosition(1) =  10
XPosition(2) = 130
XPosition(3) = 250
XPosition(4) = 370
XPosition(5) = 490
XPosition(6) = 610

Procedure Col_Joueur(Jco)
  
  If Jco = 1 : Jcolor = RGBA(0, 255, 255, 0)   : EndIf 
  If Jco = 2 : Jcolor = #Red    : EndIf 
  If Jco = 3 : Jcolor = #Green  : EndIf 
  If Jco = 4 : Jcolor = #Blue   : EndIf 
  If Jco = 5 : Jcolor = #Yellow : EndIf 
  If Jco = 6 : Jcolor = #Magenta  : EndIf
  SetWindowColor(#Window_Des, Jcolor)
EndProcedure

Procedure CheckBox_0()
  For i = 1 To 6 : SetGadgetState(20 + i, 0) : Des_Fixe(i) = 0: Next i
  ;For i = 1 To 6 : SetGadgetState(40 + 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," Y A M S " + Space(40) + "JOUEUR  N° " + Str(Joueur))
  SetGadgetText(15, "( Espace )...  Lance " + Str(5) + " Dés") 
EndProcedure

Procedure Score_des_Joueur(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
    
    ; 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 CountString(Total3$, "3")     = #True : Score$ = "Brelan20" : EndIf 
    If CountString(Total3$, "3")     = #True
    If CountString(Total3$, "2")     = #True : Score$ = "Full  25" : EndIf : EndIf
    If CountString(Total3$, "4")     = #True : Score$ = "Carré 30" : EndIf
    If CountString(Total2$, "12345") = #True : Score$ = "Psuit 30" : EndIf
    If CountString(Total2$, "23456") = #True : Score$ = "Gsuit 40" : EndIf
    If CountString(Total3$, "5")     = #True : Score$ = "YAMS  50" : EndIf
    
    
    ScoreJoueur(Joueur) = ScoreJoueur(Joueur) + Val(Right(Score$,2))
    ScoreChance(Joueur) = ScoreChance(Joueur) + Total
    TourJoueur(Joueur) = TourJoueur(Joueur) + 1
    
    AddGadgetItem (40, -1," n°"+ Str(Joueur)+Chr(10)+Str(ScoreJoueur(Joueur))+Chr(10)+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 
    SetGadgetText(15, "RESULTAT")
    
    Score$ = ""
  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 
      
      Circle(x, y, Cube_Points_r, $000000) 
    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," Y A M S " + Space(40) + "JOUEUR  N° " + Str(Joueur))
    StateMenu(0) : SetMenuItemState(0,5,GetMenuItemState(0,5)!1)
    ; CacheBouton() : HideGadget(15, #False) 
    Total = Resultat(1) + Resultat(2) + Resultat(3) + Resultat(4) + Resultat(5)
    If Lancer = 1 
      SetGadgetText(15, "( Espace )...Résultat du 1er Coup ")
    EndIf
    If Lancer = 2 
      SetGadgetText(15, "( Espace )...Résultat du 2ème Coup")
    EndIf
    If Lancer = 3 
      SetGadgetText(15, "( Espace )...3ème Coup = RESULTAT")
      Score_des_Joueur(n, Joueur)
    EndIf
    Lancer = Lancer + 1
  EndIf
EndProcedure 


;-- Début Prg

If OpenWindow(#Window_Des, 0, 0, Cube_Size + XPosition(numero) + 15, 250 + Cube_Size, " Y A M S " , #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
  
  If CreateMenu(0, WindowID(#Window_Des))    
    MenuTitle("N° Joueur")
    MenuItem(11, "Joueur n°1  " + Chr(9) + "/ Key 1")  ;Cyan
    MenuItem(12, "Joueur n°2  " + Chr(9) + "/ Key 2")  ;Rouge
    MenuItem(13, "Joueur n°3  " + Chr(9) + "/ Key 3")  ;Vert 
    MenuItem(14, "Joueur n°4  " + Chr(9) + "/ Key 4")  ;Blue 
    MenuItem(15, "Joueur n°5  " + Chr(9) + "/ Key 5")  ;Jaune
    MenuItem(16, "Joueur n°6  " + Chr(9) + "/ Key 6")  ;violet
    MenuBar()
    MenuItem(17, "Quit")
    MenuTitle( "Cliquer sur les Dés qui doivent conserver leurs valeurs     Pour choisir un joueur > Clavier de 1 à 6"  )
  EndIf
  
  SetMenuItemState(0,5,GetMenuItemState(0,5)!1)
  SetMenuItemState(0,11,GetMenuItemState(0,11)!1)
  
  SetMenuItemBitmaps_(MenuID(0), 11  , #MF_BYCOMMAND, NewMenuIcon(11,RGBA(0, 255, 255, 0))  , 0) 
  SetMenuItemBitmaps_(MenuID(0), 12  , #MF_BYCOMMAND, NewMenuIcon(12,#Red)   , 0) 
  SetMenuItemBitmaps_(MenuID(0), 13  , #MF_BYCOMMAND, NewMenuIcon(13,#Green) , 0) 
  SetMenuItemBitmaps_(MenuID(0), 14  , #MF_BYCOMMAND, NewMenuIcon(14,#Blue)  , 0) 
  SetMenuItemBitmaps_(MenuID(0), 15  , #MF_BYCOMMAND, NewMenuIcon(15,#Yellow), 0) 
  SetMenuItemBitmaps_(MenuID(0), 16  , #MF_BYCOMMAND, NewMenuIcon(16,#Magenta) , 0)
  
  
  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)  
  
  ButtonGadget(15, XPosition(1), 145, Cube_Size + 185, 30, "( Espace )...  Lance 5 Dés") ; defaut
  
  ButtonGadget(17, 320, 145, Cube_Size + 175, 30, "( Return )... PASSER  =  VALIDER  LE  RESULTAT") 
  
  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,"Joueur",48,#PB_ListIcon_GridLines)
  AddGadgetColumn(40, 1, " Score  ", (WindowWidth(#Window_Des) - 12) / 8)
  AddGadgetColumn(40, 2, " Points ", (WindowWidth(#Window_Des) - 12) / 8)
  AddGadgetColumn(40, 3, " Tours ",  (WindowWidth(#Window_Des) - 12) / 8)
  AddGadgetColumn(40, 4, " Chance ", (WindowWidth(#Window_Des) - 12) / 8)
  AddGadgetColumn(40, 5, " Tirage ", (WindowWidth(#Window_Des) - 12) / 8)
  
  ListIconGadget(42, 450, 180, 150, 145, "Joueur", 49, #PB_ListIcon_GridLines) 
  AddGadgetColumn(42, 1, "Tours", 49)
  AddGadgetColumn(42, 2, "Rang", 48)
  
  Col_Joueur(Joueur)
  SetWindowTitle(0," Y A M S " + Space(40) + "JOUEUR  N° " + Str(Joueur))
  Joueur = 1
  
  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
  
  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 7 : End
            
          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 : End
            
          Case 32 : Partie_Lancer(5)  ;Yams
            
            ; ####################### touche F1 à F5
            Case 121 : If Des_Fixe(1) = 0 : Des_Fixe(1) = 1 : SetGadgetState(21,1) : Else : Des_Fixe(1) = 0 : SetGadgetState(21,0) : EndIf
            
            Case 122 : If Des_Fixe(2) = 0 : Des_Fixe(2) = 1 : SetGadgetState(22,1) : Else : Des_Fixe(2) = 0 : SetGadgetState(22,0) : EndIf
            
            Case 123 : If Des_Fixe(3) = 0 : Des_Fixe(3) = 1 : SetGadgetState(23,1) : Else : Des_Fixe(3) = 0 : SetGadgetState(23,0) : EndIf
            
            Case 124 : If Des_Fixe(4) = 0 : Des_Fixe(4) = 1 : SetGadgetState(24,1) : Else : Des_Fixe(4) = 0 : SetGadgetState(24,0) : EndIf
            
            Case 125 : If Des_Fixe(5) = 0 : Des_Fixe(5) = 1 : SetGadgetState(25,1) : Else : Des_Fixe(5) = 0 : SetGadgetState(25,0) : EndIf
            
            ;Return Passer Valider
          Case 130
            
            If Lancer < = 3
              Score_des_Joueur(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
            
            If Lancer < = 3
              Score_des_Joueur(numero, Joueur)
            EndIf
            Lancer = 4
            
          Case 1
            
            If GetGadgetState(1) = 1 
              Des_Fixe(1) = 1
              SetGadgetState(21, 0)
              SetGadgetState(1, ImageID(1)) 
            Else
              Des_Fixe(1) = 0
              SetGadgetState(21, 1) 
            EndIf 
            
          Case 2
            
            If GetGadgetState(2) = 1
              Des_Fixe(2) = 1
              SetGadgetState(22, 0)
              SetGadgetState(1, ImageID(1)) 
            Else
              Des_Fixe(2) = 0
              SetGadgetState(22, 1)
            EndIf
            
          Case 3
            
            If GetGadgetState(3) = 1
              Des_Fixe(3) = 1
              SetGadgetState(23, 0)
              SetGadgetState(1, ImageID(1)) 
            Else
              Des_Fixe(3) = 0
              SetGadgetState(23, 1)
            EndIf
            
          Case 4
            
            If GetGadgetState(4) = 1
              Des_Fixe(4) = 1
              SetGadgetState(24, 0)
              SetGadgetState(1, ImageID(1)) 
            Else
              Des_Fixe(4) = 0
              SetGadgetState(24, 1)
            EndIf
            
          Case 5
            
            If GetGadgetState(5) = 1 
              Des_Fixe(5) = 1
              SetGadgetState(25, 0)
              SetGadgetState(1, ImageID(1)) 
            Else
              Des_Fixe(5) = 0
              SetGadgetState(25, 1)
            EndIf
            
            
            Select EventType() 
                
              Case 21
                
                If GetGadgetState(21) = 1 
                  Des_Fixe(1) = 1
                  SetGadgetState(21, 0)
                  SetGadgetState(1, ImageID(1)) 
                Else
                  Des_Fixe(1) = 0
                  SetGadgetState(21, 1) 
                EndIf
                
              Case 22
                
                If GetGadgetState(22) = 1
                  Des_Fixe(2) = 1
                  SetGadgetState(22, 0)
                  SetGadgetState(1, ImageID(1)) 
                Else
                  Des_Fixe(2) = 0
                  SetGadgetState(22, 1)
                EndIf
                
              Case 23
                
                If GetGadgetState(23) = 1
                  Des_Fixe(3) = 1
                  SetGadgetState(23, 0)
                  SetGadgetState(1, ImageID(1)) 
                Else
                  Des_Fixe(3) = 0
                  SetGadgetState(23, 1)
                EndIf
                
              Case 24
                
                If GetGadgetState(24) = 1
                  Des_Fixe(4) = 1
                  SetGadgetState(24, 0)
                  SetGadgetState(1, ImageID(1)) 
                Else
                  Des_Fixe(4) = 0
                  SetGadgetState(24, 1)
                EndIf
                
              Case 25
                
                If GetGadgetState(25) = 1 
                  Des_Fixe(5) = 1
                  SetGadgetState(25, 0)
                  SetGadgetState(1, ImageID(1)) 
                Else
                  Des_Fixe(5) = 0
                  SetGadgetState(25, 1)
                EndIf     
                
            EndSelect 
        EndSelect 
    EndSelect 
    
  ForEver 
  CloseWindow(0)
EndIf
Dernière modification par kernadec le jeu. 27/mai/2021 22:41, modifié 10 fois.
Marc56
Messages : 2146
Inscription : sam. 08/févr./2014 15:19

Re: Petits jeux de Dés YAMS Etc..

Message par Marc56 »

comment faire pour éviter le doublons dans le ListIconGadget() classement des joueurs..merci
Tu charges les noms dans une map et tu vérifies que AddMapElement() retourne une valeur différente de zéro.
:wink:
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: Petits jeux de Dés YAMS Etc..

Message par kernadec »

bjr Marc56
j 'ai mis à jour le 2ème code
Autant, je maitrise les newlists avec les listIconGadget() etc.. j' avais jamais rencontré un truc pareil
mais avec les Newmaps, j'ai pas compris comment avoir plusieurs index.
Donc pour le moment, j'explore cette idée, mais avec les tests du YAMS
je commence a saturer les yeux avec ce jeux.

j'ai un tour de passe passe dans le second listIconGadget()
au moment ou j'ai les 6 résultats croissants au deuxième tour très souvent il
me fait disparaitre un résultat et repasse à 5 résultats voir 4 et puis ça revient à 6
le mystère demeure dans la commande SortStructuredArray()
je pense que c 'est elle mon soucis

ps: si tu as un exemple Newmap avec deux index, merci

Cordialement
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: Petits jeux de Dés YAMS Etc..

Message par kernadec »

bsr à tous
Code précédent mis à jour :wink:
Aujourd'hui Je me suis remis au Yams, car j'en avais fait une overdose :mrgreen:
j'ai réglé tous les problèmes comme j'avais lâché un peu le codage
depuis un moment, alors pas mal de d'astuces avaient été oubliées :?

la seule chose que je n'ai pas définie, c'est de compté le nombre tour
au Yams normalement c'est 13.
Mais on peut visualiser cela dans le ListIconGadget() de droite.
Cordialement
Répondre