PS : le debuggueur montre les cartes, et un openwindow decide de l'atout...
Code : Tout sélectionner
; belote - SPH(2025)
; pb 6.12LTS
;;;;;;;;;;;;;;;;;;;;;;;
InitSprite()
InitKeyboard()
InitMouse()
; Ouverture de la fenêtre
OpenWindow(0,0,0,600,100,"Choix",#PB_Window_ScreenCentered);|#PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(0),0,0,600,100,1,0,0)
Police = LoadFont(0, "Arial", 16)
Procedure clear()
  Repeat         ;- Gestion de la fenêtre
    Event  = WindowEvent() 
  Until Event = 0
EndProcedure
CreateSprite(0,40,40)
StartDrawing(SpriteOutput(0))
LineXY(0,0,30,20,RGB(255,255,0))
LineXY(20,30,30,20,RGB(255,255,0))
LineXY(20,30,0,0,RGB(255,255,0))
StopDrawing()
clear()
r=Random(65535)
;r=21053
RandomSeed(r)
Debug "random "+Str(r)
Debug "-"
Global Dim carte.w(32)
Global Dim carte_melange.w(32)
Global Dim carte_coupe.w(32)
Global Dim Points.w(32)
Global Dim ordre.w(32)
Global Dim carte$(3)
Global donneur, receveur
carte$(0)="Pique"
carte$(1)="Coeur"
carte$(2)="Trèfle"
carte$(3)="Carreau"
Global atout=Random(3) ;;; (de -1 à 3)
atout=-1 
Procedure creation_cartes()
  For i=1 To 4
    For u=0 To 3
      carte(i+u*8)=i+6
    Next
    For u=0 To 3
      carte(i+4+u*8)=i
    Next
  Next
EndProcedure
creation_cartes() ;;; crée un jeu de cartes
                  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
Procedure les_points()
  
  For u=0 To 3
    nb=-3
    For i=1 To 3
      points(i+u*8)=0
      ordre(i+u*8)=nb
      nb+1
    Next
    points(4+u*8)=10
    ordre(4+u*8)=10
    points(5+u*8)=11
    ordre(5+u*8)=11
    points(6+u*8)=2
    ordre(6+u*8)=2
    points(7+u*8)=3
    ordre(7+u*8)=3
    points(8+u*8)=4
    ordre(8+u*8)=4
    
    If atout=u
      Points(3+u*8)=14
      Points(6+u*8)=20
      ordre(3+u*8)=14
      ordre(6+u*8)=20
    EndIf
    
  Next
  ;     For i=1 To 32
  ;       Debug ordre(i)
  ;     Next
  ;     End
  
EndProcedure
les_points() ;;; attribut les points selon l'atout
;;##debug "=== Exemple de carte ==="
;carte=Random(31)+1
;;##debug "carte("+Str(carte)+") "+carte$((carte-1)/8)+" - "+Str(carte(carte))+" : "+Str(points(carte))+" pts"
Procedure melange_cartes()
  For i=1 To 32
    carte_melange(i)=i  
  Next
  For i=1 To 32
    u=Random(31)+1  
    Swap carte_melange(i),carte_melange(u)
  Next
EndProcedure
melange_cartes() ;;; melange
;;;;;;;;;;;;;;;
Procedure coupe_cartes()
  Debug "Tas de cartes coupé"
  coupe=6+Random(20)
  For i=1 To 32
    carte_coupe(i)=carte_melange(coupe)
    coupe+1
    If coupe=33
      coupe=1
    EndIf  
  Next
  For i=1 To 32
    carte_melange(i)=carte_coupe(i)
  Next
EndProcedure
;coupe_cartes() ;;; coupe
;;;;;;;;;;;;;;;
;##debug "=== Liste des cartes coupées ==="
; ; ; ; For i=1 To 32
; ; ; ;   If i=21
; ; ; ;     Debug ">>carte("+Str(carte_melange(i))+") "+carte$((carte_melange(i)-1)/8)+"----"+Str(carte(carte_melange(i)))+" : "+Str(points(carte_melange(i)))+" pts"
; ; ; ;   Else
; ; ; ;     Debug "carte("+Str(carte_melange(i))+") "+carte$((carte_melange(i)-1)/8)+"----"+Str(carte(carte_melange(i)))+" : "+Str(points(carte_melange(i)))+" pts"
; ; ; ;   EndIf
; ; ; ; Next
; ; ; ; 
;##debug " "
;##debug " "
;;;;;;;;;;;;;;;
;
donneur=2;- Random(3)
je_suis_le_joueur=0 ;-je_suis_le_joueur= 
boucle=0
;- BOUCLE ####
boucle:
coupe_cartes() ;;; coupe
donneur+1
donneur%4
Global Dim joueur.w(3,7)
Global Dim joueur_ordre.w(3,7)
receveur=donneur+1
receveur%4
carte_propose=-1
;;;;;;;;;;;;;;;;  distribution des cartes
la=1
For u=0 To 3
  For i=0 To 2
    joueur(receveur,i)=carte_melange(la)
    la+1
  Next
  receveur+1
  receveur%4
Next
;;;
For u=0 To 3
  For i=3 To 4
    joueur(receveur,i)=carte_melange(la)
    la+1
  Next
  receveur+1
  receveur%4
Next
For u=0 To 3
  For i1=0 To 4
    For i2=0 To 4
      If i1<>i2
        If joueur(u,i1)<joueur(u,i2)
          Swap joueur(u,i1),joueur(u,i2)
        EndIf
      EndIf
    Next
  Next
Next
Debug "***"
Debug "le donneur est le joueur "+Str(donneur+1)
Debug "je suis le joueur "+Str(je_suis_le_joueur+1)
Debug "*"
If boucle=5
  Debug "==="
  Debug "Boucle = "+Str(boucle)
  End:End
EndIf
receveur=donneur+1
receveur%4
atout=(carte_melange(21)-1)/8
atout_autre=atout
les_points()
;###################### choix de l'atout (la carte 21)
carte_propose=carte_melange(21)
Debug "Carte proposée N°"+Str(carte_propose)+"   "+carte$((carte_propose-1)/8)+" - "+Str(carte(carte_propose))+" : "+Str(points(carte_propose))+" pts"
Debug "atout : "+carte$(atout)
Debug "---"
Debug "-"
Procedure tri(x)
  Debug "On est dans la procedure ''tri( )''"
  For U10=0 To 3
    ;     Debug "~~"
    ;     Debug "Joueur "+Str(receveur+1)
    ; ; ; ; ; ;     For i=0 To x
    ; ; ; ; ; ;       i2=joueur(receveur,i)
    ; ; ; ; ; ;       ;     Debug "carte("+Str(i2)+") "+carte$((i2-1)/8)+"----"+Str(carte(i2))+" : "+Str(points(i2))+" pts."
    ; ; ; ; ; ;     Next
    
    ; Debug "==="
    ;  Debug ""
    Repeat
      flag.b=0
      For signe=0 To 3
        For i4=0 To x
          i2=joueur(receveur,i4)
          signe1=(i2-1)/8
          For i5=i4 To x ;i4 au lieu de 0
            i3=joueur(receveur,i5)
            signe2=(i3-1)/8
            
            If i4<>i5
              If signe1=signe2 And signe1=signe
                If ordre(i2)<ordre(i3)
                  flag=1
                  Swap joueur(receveur,i4),joueur(receveur,i5)
                EndIf
                
              EndIf
            EndIf
          Next i5
        Next i4
      Next signe
    Until flag=0
    
    Debug "=> Joueur "+Str(receveur+1)
    For i=0 To x
      i2=joueur(receveur,i)
      If (i2-1)/8 = atout
        a$="  -  Atout"
      Else
        a$=""
      EndIf
      
      Debug "carte("+Str(i2)+") "+carte$((i2-1)/8)+"----"+Str(carte(i2))+" : "+Str(points(i2))+" pts. : "+a$
      joueur_ordre(receveur,i)=i2
    Next
    receveur+1
    receveur%4
  Next U10
  
EndProcedure
Debug "Tri sur 5 cartes"
tri(4)
Debug "####"
Debug "-Fin du tri-"
Debug "####"
carte_propose=carte_melange(21)
; atout=carte_propose
; Debug atout
les_points()
Debug "Atout : "+carte$(atout)+" - "+Str(carte(carte_propose))+" : "+Str(points(carte_propose))+" pts"
Debug "---"
Debug "-"
receveur=donneur+1
receveur%4
; For u=0 To 3
; For i=0 To 4
;     i2=joueur(u,i)
;     ;Debug "carte("+Str(i2)+") "+carte$((i2-1)/8)+"----"+Str(carte(i2))+" : "+Str(points(i2))+" pts."
; ; ; ; ; ; ; ; ; ; ;     Debug joueur_ordre(u,i)
;   Next
; Debug "="  
; Next
;  End:End
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;-;;;;;;;;;;;Debut;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Debug "==============="
Debug "Tour 1"
Debug "Début de l'IA"
Debug "-"
;{
For tour1=0 To 3
  ;- IA_Choice ;       ###########
  
  nb_atout=0
  nb_points=0
  nb_points_other=0
  vingt=0
  quatorze=0
  IA_Choice=0
  belote_rebelote=0
  niveau_du_joueur=160 ;-(100(joueur laxiste) à 300(joueur exigent))
  
  ;##debug "Joueur "+Str(receveur+1)
  
  ;##debug ":"
  
  
  ;-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
  
  For i=-1 To 4
    If i=-1
      ii=carte_propose
    Else
      ii=joueur(receveur,i)
    EndIf
    
    If (ii-1)/8=atout
      nb_atout+1
      nb_points+points(ii)
      If points(ii)=20
        vingt=1
      EndIf
      If points(ii)=14
        quatorze=1
      EndIf
      If points(ii)=3 Or points(ii)=4
        belote_rebelote+1
      EndIf
      
    Else
      nb_points_other+points(ii)
      If points(ii)=11
        nb_points_other+12
        ;##debug "As détecté"  
      EndIf
      
      ;;##debug "points_other :"+Str(points(carte_melange(ii)))
    EndIf
    
  Next
  
  
  ;##debug "nb_atout : "+Str(nb_atout)
  ;##debug "nb_points : "+Str(nb_points)
  ;##debug "nb_points_other : "+Str(nb_points_other)
  
  ;##debug "vingt : "+Str(vingt)
  ;##debug "quatorze : "+Str(quatorze)
  
  If vingt+quatorze=2
    IA_Choice=100
  ElseIf vingt+quatorze=1
    If vingt=1
      IA_Choice=60
    Else
      IA_Choice=30
    EndIf
  EndIf
  IA_Choice+Pow(3,(nb_atout-vingt-quatorze))
  ;##debug "Pow(3) = "+Str(Pow(3,(nb_atout-vingt-quatorze)))
  IA_Choice+nb_points
  IA_Choice+nb_points_other
  If belote_rebelote=2
    ;##debug "Belote+Rebelote"
    IA_Choice+20
  EndIf
  If nb_atout=1
    IA_Choice-20
  EndIf
  
  ;##debug "IA = "+Str(IA_Choice)+" pts"
  
  
  If receveur=je_suis_le_joueur
    Debug "C'est à moi je choisir (joueur "+Str(receveur+1)+")"
    Debug "Mon choix :"
    
    Repeat
      clear()  
      ClearScreen(RGB(40,40,40)) 
      
      ExamineMouse()
      x=MouseX()
      y=MouseY()
      x_la=x/100
      xmouse=MouseButton(#PB_MouseButton_Left)
      
      StartDrawing(ScreenOutput())
      
      For i=0 To 500 Step 100
        LineXY(i,0,i,100,RGB(200,200,200))
      Next
      
      DrawingMode(#PB_2DDrawing_Outlined|#PB_2DDrawing_Transparent )
      DrawingFont(Police)
      a$="Une"
      DrawText(50-TextWidth(a$)/2,40, a$, RGB(255,255,255))
      Dim atout_light(3)
      For i=0 To 3
        If atout=i
          atout_light(i)=RGB(5,255,5)
        Else
          atout_light(i)=RGB(30,70,0)
        EndIf
      Next
      
      a$="QUIT"
      DrawText(550-TextWidth(a$)/2,40, a$, RGB(255,0,0))
      Box(x_la*100+3,3,94,94,RGB(255,255,255))
      For i=0 To 3
        DrawText(150+i*100-TextWidth(carte$(i))/2,40, carte$(i), atout_light(i))
      Next
      StopDrawing()
      
      ;;;;;
      
      DisplayTransparentSprite(0,x,y)
      
      If xmouse=1 
        If x_la=5
          End:End
        EndIf
        If x_la=0
          IA_Choice=-1000
          Goto le_choix1
        EndIf
        If x_la>=1 And x_la<=4
          If x_la-1=atout
            IA_Choice=1000
            Goto le_choix1
          EndIf
        EndIf
      EndIf
      FlipBuffers()
      ExamineKeyboard()
    ForEver
    
  EndIf
  
  
  le_choix1:
  ClearScreen(RGB(40,40,40)) 
  FlipBuffers()
  
  If IA_Choice>=niveau_du_joueur   
    joueur_prise=receveur
    Debug "Le joueur "+Str(receveur+1)+" prend !!!!!!!!!!!!!!!!!!!!!!!!!":Delay(500)
    ;End:End
    Goto joueur_ok
  Else
    Debug "1> Le joueur "+Str(receveur+1)+" passe..." : Delay(500)
  EndIf
  receveur+1
  receveur%4
  ;##debug"="
  ;##debug"="
  
Next tour1
;}
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;##debug ""
;##debug "Fin de l'IA"
;##debug "-----"
;##debug "-"
Debug "# fin du tour 1"
;##debug "---"
For i=1 To 3
  Debug "========================="
Next
;##debug "-"
receveur=donneur+1
receveur%4
Dim reste_atout(2) ;-reste_atout(2)
u=0
For i=0 To 2
  If u=atout
    u+1
  EndIf
  reste_atout(i)=u
  u+1
Next
Debug "==============="
Debug "Tour 2"
Debug "Début de l'IA"
Debug "-"
;{
Debug "Choix de l'atout (sauf : "+carte$(atout)+")"
Debug ""
;##debug "Joueur "+Str(receveur+1)
; For i=0 To 4
;   i2=joueur(receveur,i)
;   Debug "carte("+Str(i2)+") "+carte$((i2-1)/8)+"----"+Str(carte(i2))+" : "+Str(points(i2))+" pts."
; Next
Debug "~#~#"
Dim choix(3)
For tour2=0 To 3 ;- tour2
  
  ;##debug "Joueur "+Str(receveur+1)
  Dim mes_atouts(3)
  
  For atout2=0 To 2
    nb_atout=0
    IA_Choice=0
    nb_points=0
    nb_points_other=0
    vingt=0
    quatorze=0
    belote_rebelote=0
    
    For i3=-1 To 4
      If i3=-1
        ii=carte_propose
      Else
        ii=joueur(receveur,i3)
      EndIf
      
      
      ;;##debug "Carte : "+Str(ii)+"   "+carte$((ii-1)/8)+" - "+Str(carte(ii))+" : "+Str(points(ii))+" pts"
      ;End:End
      
      atout=reste_atout(atout2)
      les_points()
      ;    ;##debug "..."
      ;    ;##debug "## atout = "+Str(atout)
      
      
      ;    ;##debug "~Carte~ : "+Str(ii)+"   "+carte$((ii-1)/8)+" - "+Str(carte(ii))+" : "+Str(points(ii))+" pts"
      
      If (ii-1)/8=atout;reste_atout(atout2)
                       ;;##debug "Carte proposée : "+Str(carte_propose)+"   "+carte$((carte_propose-1)/8)+" - "+Str(carte(carte_propose))+" : "+Str(points(carte_propose))+" pts"
                       ;;##debug "Carte : "+Str(ii)+"   "+carte$((ii-1)/8)+" - "+Str(carte(ii))+" : "+Str(points(ii))+" pts"
                       ;        ;##debug "Atout détecté"
        nb_atout+1
        nb_points+points(ii)
        If points(ii)=20
          vingt=1
        EndIf
        If points(ii)=14
          quatorze=1
        EndIf
        If points(ii)=3 Or points(ii)=4
          belote_rebelote+1
        EndIf
        
      Else
        ;nb_points_other+points(carte_melange(ii))
        nb_points_other+points(ii)
        If points(ii)=11
          nb_points_other+12
          ;          ;##debug "As détecté"  
        EndIf
        
        ;;##debug "points_other :"+Str(points(carte_melange(ii)))
      EndIf
      
      
      ;;;;;;;;;;
      
      ;  ;##debug "nb_atout : "+Str(nb_atout)
      ;  ;##debug "nb_points : "+Str(nb_points)
      ;  ;##debug "nb_points_other : "+Str(nb_points_other)
      
      ;  ;##debug "vingt : "+Str(vingt)
      ;  ;##debug "quatorze : "+Str(quatorze)
      
    Next i3
    
    
    ;;;;;;;;;;;;
    ;;;;;;;;;;;;
    ;;;;;;;;;;;;
    
    If vingt+quatorze=2
      IA_Choice+100
    ElseIf vingt+quatorze=1
      If vingt=1
        IA_Choice+60
      Else
        IA_Choice+30
      EndIf
    EndIf
    IA_Choice+Pow(3,(nb_atout-vingt-quatorze))
    ;##debug "Pow(3) = "+Str(Pow(3,(nb_atout-vingt-quatorze)))
    IA_Choice+nb_points
    IA_Choice+nb_points_other
    If belote_rebelote=2
      ;   ;##debug "Belote+Rebelote = 20 pts"
      IA_Choice+20
    EndIf
    If nb_atout=1
      ;   ;##debug "Un seul atout = -20 pts"
      IA_Choice-20
    EndIf
    ;  ;##debug "IA = "+Str(IA_Choice)+" pts"
    
    If receveur=je_suis_le_joueur
      Debug "C'est à moi je choisir (joueur "+Str(receveur+1)+")"
      Debug "Mon choix :"
      
      Repeat
        clear()  
        ClearScreen(RGB(40,40,40)) ; tour 2
        
        ExamineMouse()
        x=MouseX()
        y=MouseY()
        x_la=x/100
        xmouse=MouseButton(#PB_MouseButton_Left)
        
        StartDrawing(ScreenOutput())
        
        For i=0 To 500 Step 100
          LineXY(i,0,i,100,RGB(200,200,200))
        Next
        
        DrawingMode(#PB_2DDrawing_Outlined|#PB_2DDrawing_Transparent )
        DrawingFont(Police)
        a$="Deux"
        DrawText(50-TextWidth(a$)/2,40, a$, RGB(255,255,255))
        Dim atout_light(3)
        For i=0 To 3
          ;Debug atout:End
          
          If atout_autre<>i
            atout_light(i)=RGB(5,255,5)
          Else
            atout_light(i)=RGB(30,70,0)
          EndIf
        Next
        
        a$="QUIT"
        DrawText(550-TextWidth(a$)/2,40, a$, RGB(255,0,0))
        Box(x_la*100+3,3,94,94,RGB(255,255,255))
        For i=0 To 3
          DrawText(150+i*100-TextWidth(carte$(i))/2,40, carte$(i), atout_light(i))
        Next
        StopDrawing()
        
        ;;;;;
        
        DisplayTransparentSprite(0,x,y)
        
        If xmouse=1 
          If x_la=5
            End:End
          EndIf
          If x_la=0
            IA_Choice=-1000
            Goto le_choix2
          EndIf
          If x_la>=1 And x_la<=4
            If x_la-1<>atout_autre
              atout=x_la-1
              IA_Choice=1000
              choix(atout)=IA_Choice
              Goto le_choix2
            EndIf
          EndIf
        EndIf
        FlipBuffers()
        ExamineKeyboard()
      ForEver
      
    EndIf
    
    
    ; le_choix2:
    ;;;;;;;;;;
    
    ;;##debug "-"  
    
    choix(atout)=IA_Choice
    
    ;  ;##debug"="
    ;##debug"="
    
  Next atout2
  
  le_choix2:
  ClearScreen(RGB(40,40,40)) 
  FlipBuffers()
  
  ;##debug "Résumé :"
  
  max=-1000
  ;atout=-1
  For i=0 To 2
    ;##debug "atout : "+Str(reste_atout(i))+"   ---   "+Str(choix(reste_atout(i)))+" pts"
    If max<choix(reste_atout(i))
      max=choix(reste_atout(i))
      atout=reste_atout(i)
    EndIf
    
  Next
  ;##debug"="
  ;##debug "MAX ="+Str(max)+" --- Atout : "+Str(atout)
  
  
  If max>=niveau_du_joueur
    joueur_prise=receveur
    Debug "#################################"
    Debug "#################################"
    Debug "Le joueur "+Str(receveur+1)+" prends en "+carte$(atout)+"!!!!"
    Debug "#################################"
    Debug "#################################"
    
    
    Goto joueur_ok
  Else
    ;    Debug "#################################"
    Debug "2> Le joueur "+Str(receveur+1)+" passe...":Delay(500)
    ;    Debug "#################################"
    
  EndIf
  
  receveur+1
  receveur%4
  
Next tour2
;}
Debug ""
Debug "Fin de l'IA"
Debug "-----"
Debug "-"
receveur=donneur+1
receveur%4
For u=0 To 3*-666
  Debug "Joueur "+Str(receveur+1)
  For i=0 To 4;7
    ii= joueur(receveur,i)
    If (ii-1)/8 = atout
      a$="  -  Atout"
    Else
      a$=""
    EndIf
    
    Debug "°°°° carte("+Str(ii)+") "+carte$((ii-1)/8)+" - "+Str(carte(ii))+" : "+Str(points(ii))+a$
  Next
  Debug ""
  receveur+1
  receveur%4
Next
;;;
;;;
;;
;
; For i=1 To 32
;   If i=21
;     Debug ">>carte("+Str(carte_melange(i))+") "+carte$((carte_melange(i)-1)/8)+"----"+Str(carte(carte_melange(i)))+" : "+Str(points(carte_melange(i)))+" pts"
;   Else
;     Debug "carte("+Str(carte_melange(i))+") "+carte$((carte_melange(i)-1)/8)+"----"+Str(carte(carte_melange(i)))+" : "+Str(points(carte_melange(i)))+" pts"
;   EndIf
; Next
Debug ""
Debug "~~##~~##"
Debug "Remise dans le paquet dans l'ordre des cartes des joueurs"
Debug "~~##~~##"
;;;;; remise dans le paquet dans l'ordre des cartes des joueurs
nb=1
For u=0 To 3
  ;   Debug "Joueur "+Str(receveur+1)
  For i=0 To 4
    ii= joueur(receveur,i)
    ;    Debug "~~~~ carte("+Str(ii)+") "+carte$((ii-1)/8)+" - "+Str(carte(ii))+" : "+Str(points(ii))+a$
    carte_melange(nb)=ii  
    nb+1
  Next
  Debug ""
  receveur+1
  receveur%4
Next
;;;
;;;
;;
;
For i=1 To 32*-666
  If i=21
    Debug "##>>carte("+Str(carte_melange(i))+") "+carte$((carte_melange(i)-1)/8)+"----"+Str(carte(carte_melange(i)))+" : "+Str(points(carte_melange(i)))+" pts"
  Else
    Debug "carte("+Str(carte_melange(i))+") "+carte$((carte_melange(i)-1)/8)+"----"+Str(carte(carte_melange(i)))+" : "+Str(points(carte_melange(i)))+" pts"
  EndIf
  
Next
; ; ; 
Debug ""
Debug "~~##~~##"
Debug "~~##~~##"
Debug "~~##~~##"
Debug "~~##~~##"
Debug ""
; ; ; 
; ; ; 
; ; ; End:End
; ; ; 
boucle+1
Goto boucle
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
joueur_ok: ;-joueur_ok:
les_points()
;##debug "-#-#-"
;##debug "-#-#-"
;##debug "Distribution du reste des cartes :"
;;##debug "A suivre..."
receveur=donneur+1
receveur%4
Debug "(Le joueur "+Str(receveur+1)+" reçois les 3 prochaines cartes)"
Debug "-"
;;Dim joueur.w(3,7)
;;joueur_prise=Random(3)
; Debug "================"
; Debug "donneur = joueur "+Str(donneur+1)
; Debug "joueur_prise = joueur "+Str(joueur_prise+1)
; Debug "atout : "+carte$(atout)
; Debug "================"
la+1
flag.b=0
For u=0 To 3
  For i=5 To 7
    If joueur_prise=receveur And flag=0
      flag=1
      joueur(receveur,i)=carte_propose
    Else
      joueur(receveur,i)=carte_melange(la)
      la+1
    EndIf
  Next
  receveur+1
  receveur%4
Next
;##debug "***"
receveur=donneur+1
receveur%4
For u=0 To 3
  ;##debug "Joueur "+Str(receveur+1)
  For i=0 To 7
    ii= joueur(receveur,i)
    If (ii-1)/8 = atout
      a$="  -  Atout"
    Else
      a$=""
    EndIf
    
    ;##debug "carte("+Str(ii)+") "+carte$((ii-1)/8)+" - "+Str(carte(ii))+" : "+Str(points(ii))+a$
  Next
  ;##debug ""
  receveur+1
  receveur%4
Next
; 
; atout=Random(3) ;;; (de -1 à 3)
; les_points()
For u=0 To 3
  For i1=0 To 7
    For i2=0 To 7
      If i1<>i2
        If joueur(u,i1)<joueur(u,i2)
          Swap joueur(u,i1),joueur(u,i2)
        EndIf
      EndIf
    Next
  Next
Next
tri(7)
Debug "####"
Debug "-Fin du tri N°2-"
Debug "####"
;;;;;;;;;;
;End:End
;##debug "***"
receveur=donneur+1
receveur%4