unit Unit1;

interface

uses
{$IFDEF MSWINDOWS}
  windows, messages,
{$ENDIF}
  SysUtils, Variants, Classes, QGraphics, QControls, QForms, QDialogs,
  QStdCtrls, QExtCtrls, QMenus, QGrids, QImgList, Types, QTypes;

type
  Tprincipale = class(TForm)
    MainMenu1: TMainMenu;                   Fichier: TMenuItem;
    NouvellePartie1: TMenuItem;             Score1: TMenuItem;
    Quitter1: TMenuItem;                    Aide1: TMenuItem;
    Rgledujeu1: TMenuItem;                  Commentjouer1: TMenuItem;
    Apropos1: TMenuItem;                    N1: TMenuItem;
    Niveau1: TMenuItem;                     Normal1: TMenuItem;
    Difficile1: TMenuItem;                  Effacer1: TMenuItem;
    Voir1: TMenuItem;                       Chargerunepartie1: TMenuItem;
    Sauvegarderunepartie1: TMenuItem;       Sommaire1: TMenuItem;

    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    ImageList1: TImageList;
    Panel1: TPanel;
    ListBox1: TListBox;
    Son: TCheckBox;
    Bevel3: TBevel;

    Image1: TImage;         Image2: TImage;           Image3: TImage;
    Image4: TImage;         Image5: TImage;           Image6: TImage;
    Image7: TImage;         Image8: TImage;           Image9: TImage;
    Image10: TImage;        Image11: TImage;          Image12: TImage;
    Image13: TImage;        Image14: TImage;

    LCDNumber10: TLCDNumber;         LCDNumber12: TLCDNumber;
    LCDNumber13: TLCDNumber;         LCDNumber9: TLCDNumber;
    LCDNumber11: TLCDNumber;         LCDNumber1: TLCDNumber;
    LCDNumber2: TLCDNumber;          LCDNumber3: TLCDNumber;
    LCDNumber4: TLCDNumber;          LCDNumber5: TLCDNumber;
    LCDNumber6: TLCDNumber;          LCDNumber7: TLCDNumber;
    LCDNumber8: TLCDNumber;

    GroupBox1: TGroupBox;            GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;            GroupBox4: TGroupBox;
    GroupBox5: TGroupBox;            GroupBox6: TGroupBox;
    GroupBox7: TGroupBox;            GroupBox8: TGroupBox;
    GroupBox9: TGroupBox;            GroupBox10: TGroupBox;
    GroupBox11: TGroupBox;

    Button1: TButton;          Button3: TButton;
    Button6: TButton;          Button7: TButton;
    Button2: TButton;          Button4: TButton;
    Button5: TButton;

    procedure FormCreate(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure Quitter1Click(Sender: TObject);
    procedure Rgledujeu1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Effacer1Click(Sender: TObject);
    procedure Voir1Click(Sender: TObject);
    procedure Normal1Click(Sender: TObject);
    procedure Difficile1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Commentjouer1Click(Sender: TObject);
    procedure Sommaire1Click(Sender: TObject);
    procedure Apropos1Click(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure Image1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    procedure Donne;
    procedure Range;
    Procedure JoueOrdi(nb : integer);
    Procedure Aff10;
    Procedure AffValet;
    Procedure AffDame;
    Procedure AffRoi;
    Procedure Aff7;
    Procedure Joueur1Win;
    Procedure Joueur2Win;
    Procedure Joueur3Win;
    Procedure Joueur4Win;
    Procedure Talonp;
    Procedure Nouv;


    { Déclarations privées }

  public
    linux : boolean;
    perdu : boolean;
    function CarteQuiPrend(nb : integer) : boolean;
    procedure AfficheTresor;
    Procedure TestCarteprend;
    Procedure TestFin;
    Procedure EnrScor;
      { Déclarations publiques }
  end;

var
  principale: Tprincipale;
  CardWidth,CardHeight:integer;
  Talon,S,NbCarteRestante : array[1..4] of integer;
  NbrCJ : array[1..5] of integer;
  CartesJoueur : array[1..4,1..12] of integer;
  NumJoueur,ANumJoueur,S7,S10,Svalet,Sroi,Sdame:integer;
  AncienneCarte1,AncienneCarte2,NbrPasse,Win,b,J1,J2,J3,Niv:integer;
  fini,confirme:boolean;
  NomMeilleur,ScoreMeilleur:string;
  Nf:Textfile;
  Server: String;
  tab_image : array [1..12] of TImage;
  tab_score : array [1..4] of TLCDNumber;
  AffNbrCarteRestante : array [1..4] of TLCDNumber;

implementation

uses jg, fin_partie, aide ;

{$R *.xfm}


procedure Tprincipale.FormCreate(Sender: TObject);
  var i:integer;
begin
  {$IFDEF MSWINDOWS}
    PixelsPerInch:=96;
    linux:=false;
  {$ELSE}
    linux:=true;
    PixelsPerInch:=74;
  {$ENDIF}
   Tab_Image[1]:=Image1;              Tab_Image[2]:=Image2;
   Tab_Image[3]:=Image3;              Tab_Image[4]:=Image4;
   Tab_Image[5]:=Image5;              Tab_Image[6]:=Image6;
   Tab_Image[7]:=Image7;              Tab_Image[8]:=Image8;
   Tab_Image[9]:=Image9;              Tab_Image[10]:=Image10;
   Tab_Image[11]:=Image11;            Tab_Image[12]:=Image12;

   Tab_Score[1]:=LCDNumber1;          Tab_Score[2]:=LCDNumber2;
   Tab_Score[3]:=LCDNumber3;          Tab_Score[4]:=LCDNumber4;
   AffNbrCarteRestante[1]:=LCDNumber5;AffNbrCarteRestante[2]:=LCDNumber6;
   AffNbrCarteRestante[3]:=LCDNumber7;AffNbrCarteRestante[4]:=LCDNumber8;
   confirme:=False;
   for i:=1 to 5 do NbrCJ[i]:=0;
   AncienneCarte2:=53;
  //récupère le meilleur score
   Assignfile(NF,'nj');
   Reset (Nf);
   ReadLn(Nf,NomMeilleur);
   ReadLn(Nf,ScoreMeilleur);
   closeFile(NF);
end;

procedure Tprincipale.FormResize(Sender: TObject);
begin
  principale.Refresh ;
  Panel1.Top:=(Principale.Height-Panel1.Height)div 2;
  Panel1.Left:=(Principale.Width-Panel1.Width)div 2;
end;

procedure Tprincipale.Quitter1Click(Sender: TObject);
begin
  case messageDlg('Voulez-vous vraiement quitter ?',mtConfirmation,[mbYes,mbNo],0)of
    //demande la confirmation de quitter
    mrYes: application.Terminate;
    mrno:; //Si la reponse est non, alors on continue l'application
  end; //Fin de la demande de confirmation de quitter
end;

procedure Tprincipale.Rgledujeu1Click(Sender: TObject);
  var chemin : string ;
begin
  getdir(0,chemin);
  form2.tt.LoadFromFile(chemin+'/regle.htm');
  form2.Visible:=true;
end;

procedure Tprincipale.Donne();
var QuelJoueur,vboucle:Integer;
begin
  vboucle:=0;
  while (vboucle<52) do
  begin
    vboucle:=vboucle+1;
    QuelJoueur:=random(5)+1;
    If QuelJoueur = 5 then
    begin
      If NbrCJ[5] = 4 then
        dec(vboucle)
      else begin
        Talon[NbrCJ[5]+1]:=vboucle;
        inc(NbrCJ[5]);
      end;
    end else
      If NbrCJ[QuelJoueur]=12 then
         dec(vboucle)
      else begin
        CartesJoueur[QuelJoueur,NbrCJ[QuelJoueur]+1]:=vboucle;
        inc(NbrCJ[QuelJoueur]);
      end;
  end;

end;



function valeur(x : integer) : integer;
  var val:integer;
begin
  val:=x;
  while (val>13) do val:=val-13;
  result := val;
end;


procedure Tprincipale.Range();
  var i,j,k,temp : integer;
begin

  for i:=1 to 13 do
    for j:=2 to 13-i do
      for k:=1 to 4 do
        if (valeur(CartesJoueur[k,j])<valeur(CartesJoueur[k,j-1])) then
        begin
	  temp:=CartesJoueur[k,j];
	  CartesJoueur[k,j]:=CartesJoueur[k,j-1];
	  CartesJoueur[k,j-1]:=temp;
        end;
    //affiche les cartes

  For i:=1 to 12 do
    if linux then
      ImageList1.GetBitmap(CartesJoueur[1,i]-1,tab_image[i].Picture.Bitmap)
    else
      ImageList1.Draw(tab_image[i].canvas,0,0,CartesJoueur[1,i]-1);
end;


procedure Tprincipale.Button1Click(Sender: TObject);
begin

  If confirme=true then
  begin
    case MessageDlg('Voulez-vraiement mettre les compteurs à 1500',MtConfirmation,[MbYes,MbNo],0) of
                    MrYes : nouv;
                    mrNo:;
    end;
  end
  else nouv;
end;

Procedure Tprincipale.Nouv();
  var i : integer;
begin
    Difficile1.Enabled:=True;
    Normal1.Enabled:=True;
    perdu:=False;
    Confirme:=true;

    for i:=1 to 4 do S[i]:=1500;

    S7:=0;
    S10:=0;
    Svalet:=0;
    Sroi:=0;
    Sdame:=0;

    AfficheTresor;
    Aff7;
    Aff10;
    AffRoi;
    AffDame;
    AffValet;

    Button2.Enabled:=True;

    NumJoueur:=4;       ANumJoueur:=4;

end;



Procedure Tprincipale.AfficheTresor();
  var i : integer;
begin
  for i:=1 to 4 do
    Tab_Score[i].Value:=IntToStr(S[i]);
end;



//procedure de distribution de carte
procedure Tprincipale.Button2Click(Sender: TObject);
  var i : integer;
begin
   Sauvegarderunepartie1.Enabled:=False;
   Difficile1.Enabled:=False;
   Normal1.Enabled:=False;
   for i:=1 to 5 do NbrCJ[i]:=0;
   AncienneCarte1:=13;
   Button2.Enabled:=False;
   Button6.Enabled:=False;
   for i:=1 to 4 do S[i]:=S[i]-150;
   AfficheTresor;
   TestFin;
   If (not(perdu)) then
   begin
     for i:=1 to 4 do
     begin
       NbCarteRestante[i]:=12;
       AffNbrCarteRestante[i].Value:='12';
     end;
     If ANumJoueur=4 then NumJoueur:=1;
     If ANumJoueur<4 then inc(NumJoueur);
     ANumJoueur:=NumJoueur;
     Fini:=False;
     S7:=S7+200;
     S10:=S10+40;
     Svalet:=Svalet+80;
     Sroi:=Sroi+160;
     Sdame:=Sdame+120;
     Aff10;
     AffValet;
     AffDame;
     AffRoi;
     Aff7;
     ListBox1.Items.Clear;
     randomize;
     donne;
     range;
     for i:=1 to 12 do
     begin
       tab_image[i].Enabled:=true;
       tab_image[i].Visible:=true;
     end;
     if (NumJoueur=1)and(son.Checked) then beep;
     If NumJoueur<>1 then JoueOrdi(NumJoueur);
   end;
end;

function TPrincipale.CarteQuiPrend(nb : integer) : Boolean;
begin
  result :=false;
  If AncienneCarte2= 23 then  //10 qui prend
  begin
    S[nb]:=S[nb]+S10;
    S10:=0;
    AfficheTresor;
    Aff10;
    result:=True;
  end;

  If AncienneCarte2= 20 then //7 qui prend
  begin
    S[nb]:=S[nb]+S7;
    S7:=0;
    AfficheTresor;
    result:=True;
    Aff7;
  end;

  If AncienneCarte2= 11 then  // valet qui prend
  begin
    S[nb]:=S[nb]+Svalet;
    Svalet:=0;
    AfficheTresor;
    result:=True;
    Affvalet;
  end;

  If AncienneCarte2= 51 then //dame qui prend
  begin
    S[nb]:=S[nb]+SDame;
    SDame:=0;
    AfficheTresor;
    result:=True;
    AffDame;
  end;

  If AncienneCarte2= 39 then //Roi qui prend
  begin
    S[nb]:=S[nb]+SRoi;
    SRoi:=0;
    AfficheTresor;
    result:=True;
    AffRoi;
  end;
end;

procedure Tprincipale.JoueOrdi(nb : integer);
  var b:integer;
begin
  B:=0;
  while (B<12) do
  begin
    inc(B);
    If ((AncienneCarte1+1)=valeur(CartesJoueur[nb,B])) or ((AncienneCarte1=13)and(CartesJoueur[nb,B]<>0)) then
    begin
      if linux then
        ImageList1.GetBitmap(CartesJoueur[nb,B]-1,Image13.Picture.Bitmap)
      else
        ImageList1.Draw(Image13.canvas,0,0,CartesJoueur[nb,B]-1);
      Image13.Refresh;
      AncienneCarte2:=CartesJoueur[nb,B];
      AncienneCarte1:=valeur(CartesJoueur[nb,B]);
      dec(NbCarteRestante[nb]);
      AffNbrCarteRestante[nb].Value:=IntToStr(NbCarteRestante[nb]);;
      CartesJoueur[nb,B]:=0;
      NbrPasse:=0;
      sleep(500);
      CarteQuiPrend(nb);
      if anciennecarte1=13 then B:=0;
    end;
  end;

  if nb = 2 then Joueur2Win;
  if nb = 3 then Joueur3Win;
  if nb = 4 then Joueur4Win;

  If Fini=False then
  begin
    NbrPasse:=NbrPasse+1;
    If NbrPasse=4 then AncienneCarte1:=AncienneCarte1+1;
    If NbrPasse=4 then NbrPasse:=0;
    if nb = 4 then
    begin
      If AncienneCarte1<10 then Button4.Caption:='Sans '+IntToStr
          (AncienneCarte1+1);
      If AncienneCarte1=10 then Button4.Caption:='Sans valet';
      If AncienneCarte1=11 then Button4.Caption:='Sans dame';
      If AncienneCarte1=12 then Button4.Caption:='Sans roi';
      If AncienneCarte1<>13 then Button4.Enabled:=true;
      If Son.Checked then Beep;
    end else
      JoueOrdi(nb+1);
  end;
end;


procedure Tprincipale.Image1Click(Sender: TObject);
  var i,num_carte : integer;
begin
  num_carte:=0;
  for i:=1 to 12 do
    if tab_image[i]=(sender as TImage) then
      num_carte:=i;
  If ((AncienneCarte1+1)=valeur(CartesJoueur[1,num_carte])) or ((AncienneCarte1=13)and(CartesJoueur[1,num_carte]<>0))then
  begin
    NbrPasse:=0;
    AncienneCarte2:=CartesJoueur[1,num_carte];
    (sender as TImage).Enabled:=False;
    (sender as TImage).Visible:=false;
    if linux then
      ImageList1.GetBitmap(AncienneCarte2-1,Image13.Picture.Bitmap)
    else
      ImageList1.Draw(Image13.canvas,0,0,AncienneCarte2-1);
    Image13.refresh;
    AncienneCarte1:=valeur(CartesJoueur[1,num_carte]);
    CartesJoueur[1,num_carte]:=0;
    button4.Enabled:=True;
    button5.Enabled:=True;
    dec(NbCarteRestante[1]);
    If AncienneCarte1<10 then Button4.Caption:='Sans '+IntToStr
          (AncienneCarte1+1);
    If AncienneCarte1=10 then Button4.Caption:='Sans valet';
    If AncienneCarte1=11 then Button4.Caption:='Sans dame';
    If AncienneCarte1=12 then Button4.Caption:='Sans roi';
    If AncienneCarte1=13 then button4.Enabled:=False;
  end
  else ShowMessage('La carte n''est pas valide');
  AffNbrCarteRestante[1].Value:=IntToStr(NbCarteRestante[1]);
  Joueur1Win;
end;

procedure Tprincipale.Aff10();
begin
   LCDNumber12.Value:=IntToStr(S10);
end;

procedure Tprincipale.AffValet();
begin
   LCDNumber11.Value:=IntTostr(Svalet);
end;

procedure Tprincipale.AffDame();
begin
   LCDNumber9.Value:=IntToStr(Sdame);
end;

procedure Tprincipale.AffRoi();
begin
   LCDNumber10.Value:=IntToStr(Sroi);
end;

procedure Tprincipale.Aff7();
begin
  LCDNumber13.Value:=IntToStr(S7);
end;


procedure Tprincipale.Button4Click(Sender: TObject);
begin
  NbrPasse:=NbrPasse+1;
  If NbrPasse=4 then AncienneCarte1:=AncienneCarte1+1;
  If NbrPasse=4 then NbrPasse:=0;
  Button4.Enabled:=false;
  Button5.Enabled:=false;
  JoueOrdi(2);
end;




procedure Tprincipale.Button5Click(Sender: TObject);
begin
  button5.Enabled:=false;
  If CarteQuiPrend(1)=false then ShowMessage('Ce n''était pas une carte qui prenait');
end;

procedure Tprincipale.Joueur1Win();
  var b,i:integer;
  var j: array[1..3]of integer;
begin
  for i:=1 to 3 do J[i]:=0;
  If NbCarteRestante[1]=0 then
  begin
    if CarteQuiPrend(1) then ShowMessage('Vous avez les points de la carte qui prenair');
    Fini:=True;
    for i:=1 to 3 do
      For b:=1 to 12 do J[i]:=J[i]+valeur(CartesJoueur[i+1,b]);
    finmanche := TFinmanche.Create(principale);
    finmanche.Caption:='GAGNER !!!';
    finmanche.Label1.Caption:='Vous avez fini le premier, vous avez gagné la manche';
    finmanche.Label2.Caption:='Je vous ai donné '+intToStr(10*J[1]);
    finmanche.Label3.Caption:='DDMICROLOG vous a donné '+intToStr(10*J[2]);
    finmanche.Label4.Caption:='Damien DOISELET vous a donné '+intToStr(10*J[3]);
    S[1]:=S[1]+(10*J[1])+(10*J[2])+(10*J[3]);
    finmanche.Label5.Caption:= 'Vous avez donc '+intToStr(S[1]);
    for i:=1 to 3 do S[i+1]:=S[i+1]-(10*J[i]);
    TalonP;
    finmanche.visible:=true;
  end;
end;

procedure Tprincipale.Joueur2Win();
  var b,i:integer;
  var j: array[1..3]of integer;
begin
  for i:=1 to 3 do J[i]:=0;
  If NbCarteRestante[2]=0 then
  begin
    Fini:=True;
    For b:=1 to 12 do J[1]:=J[1]+valeur(CartesJoueur[1,b]);
    For b:=1 to 12 do J[2]:=J[2]+valeur(CartesJoueur[3,b]);
    For b:=1 to 12 do J[3]:=J[3]+valeur(CartesJoueur[4,b]);
    finmanche := TFinManche.Create(principale);
    finmanche.Caption:='Perdu !!!';
    finmanche.Label1.Caption:='J''ai fini le premier, vous avez perdu la manche';
    finmanche.Label2.Caption:='Vous m''avez donné '+intToStr(10*J[1]);
    finmanche.Label3.Caption:='DDMICROLOG m''a donné '+intToStr(10*J[2]);
    finmanche.Label4.Caption:='Damien DOISELET m''a donné '+intToStr(10*J[3]);
    S[2]:=S[2]+(10*J[1])+(10*J[2])+(10*J[3]);
    finmanche.Label5.Caption:='J''ai donc '+intToStr(S[2]);
    S[1]:=S[1]-(10*J[1]);S[3]:=S[3]-(10*J[2]);S[4]:=S[4]-(10*J[3]);
    TalonP;
    finmanche.visible:=true;
  end;
end;

procedure Tprincipale.Joueur3Win();
  var b,i:integer;
  var j: array[1..3]of integer;
begin
  for i:=1 to 3 do J[i]:=0;
  If NbCarteRestante[3]=0 then
  begin
    Fini:=True;
    For b:=1 to 12 do J[1]:=J[1]+valeur(CartesJoueur[1,b]);
    For b:=1 to 12 do J[2]:=J[2]+valeur(CartesJoueur[2,b]);
    For b:=1 to 12 do J[3]:=J[3]+valeur(CartesJoueur[4,b]);
    finmanche := TFinManche.Create(principale);
    finmanche.Caption:='Perdu !!!';
    finmanche.Label1.Caption:='DDMICROLOG a fini le premier, vous avez perdu la manche';
    finmanche.Label2.Caption:='vous lui avez donné '+intToStr(10*J[1]);
    finmanche.Label3.Caption:='Je lui ai donné '+intToStr(10*J[2]);
    finmanche.Label4.Caption:='Damien DOISELET lui a donné '+intToStr(10*J[3]);
    S[3]:=S[3]+(10*J[1])+(10*J[2])+(10*J[3]);
    finmanche.Label5.Caption:='DDMICROLOG a donc '+intToStr(S[3]);
    S[1]:=S[1]-(10*J[1]);S[2]:=S[2]-(10*J[2]);S[4]:=S[4]-(10*J[3]);
    TalonP;
    finmanche.visible:=true;
  end;
end;

procedure Tprincipale.Joueur4Win();
  var b,i:integer;
  var j: array[1..3]of integer;
begin
  for i:=1 to 3 do J[i]:=0;
  If NbCarteRestante[4]=0 then
  begin
    Fini:=True;
    For b:=1 to 12 do J[1]:=J[1]+valeur(CartesJoueur[1,b]);
    For b:=1 to 12 do J[2]:=J[2]+valeur(CartesJoueur[2,b]);
    For b:=1 to 12 do J[3]:=J[3]+valeur(CartesJoueur[3,b]);
    finmanche := TFinManche.Create(principale);
    finmanche.Caption:='Perdu !!!';
    finmanche.Label1.Caption:='Damien DOISELET a fini le premier, vous avez perdu la manche';
    finmanche.Label2.Caption:='vous lui avez donné '+ intToStr(10*J[1]);
    finmanche.Label3.Caption:='Je lui ai donné ' + intToStr(10*J[2]);
    finmanche.Label4.Caption:='DDMICROLOG lui a donné ' + intToStr(10*J[3]);
    S[4]:=S[4]+(10*J[1])+(10*J[2])+(10*J[3]);
    finmanche.Label5.Caption:='Damien DOISELET a donc '+intToStr(S[4]);
    S[1]:=S[1]-(10*J[1]);S[2]:=S[2]-(10*J[2]);S[3]:=S[3]-(10*J[3]);
    TalonP;
    finmanche.visible:=true;
  end;
end;

procedure Tprincipale.Talonp();
begin
  finmanche.ListBox1.Items.Clear;
  finmanche.ListBox1.Items.Add(IntToStr(Talon[1]));
  finmanche.ListBox1.Items.Add(IntToStr(Talon[2]));
  finmanche.ListBox1.Items.Add(IntToStr(Talon[3]));
  finmanche.ListBox1.Items.Add(IntToStr(Talon[4]));
//  finmanche.affTalon;
end;

procedure Tprincipale.TestCarteprend();
var b,j : integer;
begin
  For b:=1 to 12 do
  begin
    If CartesJoueur[1,b]=23 then
    Begin
      S[1]:=S[1]-S10;
      S10:=S10*2;
      MessageDlg('Vous aviez le 10 qui prend',MtInformation,[mbOk],0);
    end else If CartesJoueur[1,b]=20 then
    Begin
      S[1]:=S[1]-S7;
      S7:=S7*2;
      MessageDlg('Vous aviez le 7 qui prend',MtInformation,[mbOk],0);
    end else If CartesJoueur[1,b]=39 then
    Begin
      S[1]:=S[1]-Sroi;
      Sroi:=Sroi*2;
      MessageDlg('Vous aviez le roi qui prend',MtInformation,[mbOk],0);
    end else If CartesJoueur[1,b]=11 then
    Begin
      S[1]:=S[1]-Svalet;
      Svalet:=Svalet*2;
      MessageDlg('Vous aviez le valet qui prend',MtInformation,[mbOk],0);
    end else If CartesJoueur[1,b]=51 then
    Begin
      S[1]:=S[1]-Sdame;
      Sdame:=Sdame*2;
      MessageDlg('Vous aviez la dame qui prend',MtInformation,[mbOk],0);
    end;

    for j:=2 to 4 do
    begin
      If CartesJoueur[j,b]=20 then
      begin
        S[j]:=S[j]-S7;
        S7:=S7*2;
      end;
      If CartesJoueur[j,b]=23 then
      Begin
        S[j]:=S[j]-S10;
        S10:=S10*2;
      end;
      If CartesJoueur[j,b]=39 then
      Begin
        S[j]:=S[j]-Sroi;
        Sroi:=Sroi*2;
      end;
      If CartesJoueur[j,b]=11 then
      Begin
        S[j]:=S[j]-Svalet;
        Svalet:=Svalet*2;
      end;
      If CartesJoueur[j,b]=51 then
      Begin
        S[j]:=S[j]-Sdame;
        Sdame:=Sdame*2;
      end;
    end;
  end;
  Aff10;
  AffValet;
  AffDame;
  AffRoi;
  Aff7;
end;

procedure Tprincipale.TestFin();
var b : integer;
begin
  AncienneCarte2:=53;
  For b:=1 to 12 do  CartesJoueur[1,b]:=0;
  If S[1]<1 then
  begin
    finpartie := TFinPartie.Create(principale);
    finpartie.Label1.Caption:='Vous n''avez plus d''argent, vous êtes dernier.';
    finpartie.GroupBox2.Visible:=False;
    finpartie.Label2.Caption:='Vous avez 0 Euro';
    finpartie.Label4.Caption:='DDMICROLOG a '+IntToStr(S[3])+' Euros';
    finpartie.Label3.Caption:='J''ai '+IntToStr(S[2])+' Euros';
    finpartie.Label5.Caption:='Damien DOISELET a '+IntToStr(S[4])+' Euros';
    confirme:=False;
    perdu:=True;
    Button2.enabled:=false;
    finpartie.Visible:=True;
  end else If S[2]<1 then
  begin
    finpartie := TFinPartie.Create(principale);
    finpartie.Label1.Caption:='Je n''a plus d''argent, il est dernier.';
    If StrToInt(ScoreMeilleur)<(S[1]*(niv+1)) then finpartie.GroupBox2.Visible:=True
    else finpartie.GroupBox2.Visible:=False;
    finpartie.Label2.Caption:='Vous avez '+IntToStr(S[1])+' Euros';
    finpartie.Label3.Caption:='J''ai 0 Euro';
    finpartie.Label4.Caption:='DDMICROLOG a '+IntToStr(S[3])+' Euros';
    finpartie.Label5.Caption:='Damien DOISELET a '+IntToStr(S[4])+' Euros';
    confirme:=False;
    perdu:=True;
    Button2.enabled:=false;
    finpartie.Visible:=True;
  end else If S[3]<1 then
  begin
    finpartie := TFinPartie.Create(principale);
    finpartie.Label1.Caption:='DDMICROLOG n''a plus d''argent, il est dernier.';
    If StrToInt(ScoreMeilleur)<(S[1]*(niv+1)) then finpartie.GroupBox2.Visible:=True
    else finpartie.GroupBox2.Visible:=False;
    finpartie.Label2.Caption:='Vous avez '+IntToStr(S[1])+' Euros';
    finpartie.Label3.Caption:='J''a '+IntToStr(S[2])+' Euros';
    finpartie.Label4.Caption:='DDMICROLOG a 0 Euro';
    finpartie.Label5.Caption:='Damien DOISELET a '+IntToStr(S[4])+' Euros';
    confirme:=False;
    perdu:=True;
    Button2.enabled:=false;
    finpartie.Visible:=True;
  end else If S[4]<1 then
  begin
    finpartie := TFinPartie.Create(principale);
    finpartie.Label1.Caption:='Damien DOISELET n''a plus d''argent, il est dernier.';
    If StrToInt(ScoreMeilleur)<(S[1]*(niv+1)) then finpartie.GroupBox2.Visible:=True
    else finpartie.GroupBox2.Visible:=False;
    finpartie.Label2.Caption:='Vous avez '+IntToStr(S[1])+' Euros';
    finpartie.Label3.Caption:='J''ai '+IntToStr(S[2])+' Euros';
    finpartie.Label4.Caption:='DDMICROLOG a '+IntToStr(S[3])+' Euros';
    finpartie.Label5.Caption:='Damien DOISELET a 0 Euro';
    confirme:=False;
    perdu:=True;
    Button2.enabled:=false;
    finpartie.Visible:=True;
  end;
end;

procedure Tprincipale.EnrScor();
begin
   If Difficile1.Checked=True then S[1]:=S[1]+S[1];
   NomMeilleur:=finpartie.Edit1.Text;
   ScoreMeilleur:=IntToStr(S[1]+1000*niv);
   Assignfile(NF,'nj');
   Rewrite(Nf);
   WriteLn(Nf,NomMeilleur);
   WriteLn(Nf,ScoreMeilleur);
   closeFile(NF);
end;

procedure Tprincipale.Effacer1Click(Sender: TObject);
begin
   NomMeilleur:='Personne';
   ScoreMeilleur:='0';
   Assignfile(NF,'nj');
   Rewrite(Nf);
   WriteLn(Nf,NomMeilleur);
   WriteLn(Nf,ScoreMeilleur);
   closeFile(NF)
end;

procedure Tprincipale.Voir1Click(Sender: TObject);
begin
ShowMessage(NomMeilleur+' a fini la partie avec : '+ScoreMeilleur+' Euros');
end;

procedure Tprincipale.Normal1Click(Sender: TObject);
begin
Normal1.Checked:=true;
Difficile1.Checked:=False;
GroupBox6.Visible:=true;
end;

procedure Tprincipale.Difficile1Click(Sender: TObject);
begin
Difficile1.Checked:=true;
GroupBox6.Visible:=False;
Normal1.Checked:=False;
end;

procedure Tprincipale.Button3Click(Sender: TObject);
begin
  If OpenDialog1.Execute then
  begin
    Difficile1.Enabled:=True;
    Normal1.Enabled:=True;
    AssignFile(NF,OpenDialog1.FileName);
    Reset(Nf);
    ReadLn(Nf,S[1]);
    ReadLn(Nf,S[2]);
    ReadLn(Nf,S[3]);
    ReadLn(Nf,S[4]);
    ReadLn(Nf,NumJoueur);
    ReadLn(Nf,ANumJoueur);
    ReadLn(Nf,Niv);
    closeFile(Nf);
    perdu:=False;
    If Niv=0 then Normal1.Checked:=true;
    If Niv=0 then Difficile1.Checked:=False;
    If Niv=1 then Normal1.Checked:=False;
    If Niv=1 then Difficile1.Checked:=true;
    Confirme:=true;
    S7:=0;
    S10:=0;
    Svalet:=0;
    Sroi:=0;
    Sdame:=0;
    AfficheTresor;
    Aff7;
    Aff10;
    AffRoi;
    AffDame;
    AffValet;
    Button2.Enabled:=True;
    If normal1.Checked=true then GroupBox6.Visible:=True
    else GroupBox6.Visible:=False;

  end;
end;

procedure Tprincipale.Button6Click(Sender: TObject);
  var NomF : string;
begin
  If normal1.Checked=true then Niv:=0;
  If SaveDialog1.Execute then
  begin
    NomF:=SaveDialog1.FileName;
    If Uppercase(ExtractFileExt(NomF))<>'svgNJ' then NomF:=NomF+'.svgNj';
    AssignFile(NF,NomF);
    Rewrite(Nf);
    writeLn(Nf,S[1]);
    writeLn(Nf,S[2]);
    writeLn(Nf,S[3]);
    writeLn(Nf,S[4]);
    writeLn(Nf,NumJoueur);
    writeLn(Nf,ANumJoueur);
    writeLn(Nf,Niv);
    closeFile(Nf);
  end;
end;

procedure Tprincipale.Commentjouer1Click(Sender: TObject);
  var chemin : string ;
begin
  getdir(0,chemin);
  form2.tt.LoadFromFile(chemin+'/com.htm');
  form2.Visible:=true;
end;

procedure Tprincipale.Sommaire1Click(Sender: TObject);
  var chemin : string ;
begin
  getdir(0,chemin);
  form2.tt.LoadFromFile(chemin+'/Som.htm');
  form2.Visible:=true;
end;

procedure Tprincipale.Apropos1Click(Sender: TObject);
  var chemin : string ;
begin
  getdir(0,chemin);
  form2.tt.LoadFromFile(chemin+'/aprop.htm');
  form2.Visible:=true;
end;

procedure Tprincipale.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  case messageDlg('Voulez-vous vraiement quitter ?',mtConfirmation,[mbYes,mbNo],0)of
    //demande la confirmation de quitter
    mrYes:application.Terminate;
    mrno:application.Run; //Si la reponse est non, alors on continue l'application
  end; //Fin de la demande de confirmation de quitter

end;
procedure Tprincipale.FormShow(Sender: TObject);
begin
  Principale.WindowState:=wsMaximized;
  with Panel1 do
  begin
  Left := 40;
    Top := 8;
    Width := 737;
    Height := 516;
  end;
  with Image14 do
  begin
    Left := 8;
    Top := 8;
    Width := 425;
    Height := 425;
  end;
  with Bevel3 do
  begin
    Left := 8;
    Top := 8;
    Width := 425;
    Height := 425;
  end;
  with Image1 do
  begin
    Left := 9;
    Top := 445;
    Width := 72;
    Height := 71;
  end;
  with Image2 do
  begin
    Left := 41;
    Top := 445;
    Width := 72;
    Height := 71;
  end;
  with Image3 do
  begin
    Left := 73;
    Top := 445;
    Width := 72;
    Height := 71;
  end;
  with Image4 do
  begin
    Left := 105;
    Top := 445;
    Width := 72;
    Height := 71;
  end;
  with Image5 do
  begin
    Left := 137;
    Top := 445;
    Width := 72;
    Height := 71;
  end;
  with Image6 do
  begin
    Left := 169;
    Top := 445;
    Width := 72;
    Height := 71;
  end;
  with Image7 do
  begin
    Left := 201;
    Top := 445;
    Width := 72;
    Height := 71;
  end;
  with Image8 do
  begin
    Left := 233;
    Top := 445;
    Width := 72;
    Height := 71;
  end;
  with Image9 do
  begin
    Left := 265;
    Top := 445;
    Width := 72;
    Height := 71;
  end;
  with Image10 do
  begin
    Left := 297;
    Top := 445;
    Width := 72;
    Height := 71;
  end;
  with Image11 do
  begin
    Left := 329;
    Top := 445;
    Width := 72;
    Height := 71;
  end;
  with Image12 do
  begin
    Left := 361;
    Top := 445;
    Width := 72;
    Height := 71;
  end;
  with LCDNumber10 do
  begin
    Left := 24;
    Top := 176;
    Width := 68;
    Height := 30;
  end;
  with LCDNumber12 do
  begin
    Left := 24;
    Top := 236;
    Width := 68;
    Height := 30;
  end;
  with LCDNumber13 do
  begin
    Left := 219;
    Top := 204;
    Width := 68;
    Height := 30;
  end;
  with LCDNumber9 do
  begin
    Left := 336;
    Top := 176;
    Width := 68;
    Height := 30;
  end;
  with LCDNumber11 do
  begin
    Left := 336;
    Top := 234;
    Width := 68;
    Height := 30;
  end;
  with GroupBox1 do
  begin
    Left := 448;
    Top := 8;
    Width := 137;
    Height := 273;
  end;
  with GroupBox2 do
  begin
    Left := 16;
    Top := 16;
    Width := 105;
    Height := 57;
  end;
  with LCDNumber1 do
  begin
    Left := 8;
    Top := 24;
    Width := 89;
    Height := 25;
  end;
  with GroupBox3 do
  begin
    Left := 16;
    Top := 80;
    Width := 105;
    Height := 57;
  end;
  with LCDNumber2 do
  begin
    Left := 8;
    Top := 24;
    Width := 89;
    Height := 25;
  end;
  with GroupBox4 do
  begin
    Left := 16;
    Top := 144;
    Width := 105;
    Height := 57;
  end;
  with LCDNumber3 do
  begin
    Left := 8;
    Top := 24;
    Width := 89;
    Height := 25;
  end;
  with GroupBox5 do
  begin
    Left := 16;
    Top := 208;
    Width := 105;
    Height := 57;
  end;
  with LCDNumber4 do
  begin
    Left := 8;
    Top := 24;
    Width := 89;
    Height := 25;
  end;
  with GroupBox6 do
  begin
    Left := 592;
    Top := 8;
    Width := 137;
    Height := 273;
  end;
  with GroupBox7 do
  begin
    Left := 8;
    Top := 16;
    Width := 121;
    Height := 57;
  end;
  with LCDNumber5 do
  begin
    Left := 8;
    Top := 24;
    Width := 105;
    Height := 25;
  end;
  with GroupBox8 do
  begin
    Left := 8;
    Top := 80;
    Width := 121;
    Height := 57;
  end;
  with LCDNumber6 do
  begin
    Left := 8;
    Top := 24;
    Width := 105;
    Height := 25;
  end;
  with GroupBox9 do
  begin
    Left := 8;
    Top := 144;
    Width := 121;
    Height := 57;
  end;
  with LCDNumber7 do
  begin
    Left := 8;
    Top := 24;
    Width := 105;
    Height := 25;
  end;
  with GroupBox10 do
  begin
    Left := 8;
    Top := 208;
    Width := 121;
    Height := 57;
  end;
  with LCDNumber8 do
  begin
    Left := 8;
    Top := 24;
    Width := 105;
    Height := 25;
  end;
  with GroupBox11 do
  begin
    Left := 616;
    Top := 320;
    Width := 89;
    Height := 137;
  end;
  with Image13 do
  begin
    Left := 9;
    Top := 21;
    Width := 72;
    Height := 108;
  end;
  with Button1 do
  begin
    Left := 448;
    Top := 296;
    Width := 145;
    Height := 25;
  end;
  with Button3 do
  begin
    Left := 448;
    Top := 328;
    Width := 145;
    Height := 25;
  end;
  with Button6 do
  begin
    Left := 448;
    Top := 360;
    Width := 145;
    Height := 25;
  end;
  with Button7 do
  begin
    Left := 448;
    Top := 390;
    Width := 145;
    Height := 25;
  end;
  with Button2 do
  begin
    Left := 448;
    Top := 420;
    Width := 145;
    Height := 25;
  end;
  with Button4 do
  begin
    Left := 448;
    Top := 450;
    Width := 145;
    Height := 25;
  end;
  with Button5 do
  begin
    Left := 448;
    Top := 480;
    Width := 145;
    Height := 25;
  end;
  with ListBox1 do
  begin
    Left := 144;
    Top := 304;
    Width := 121;
    Height := 97;
  end;
  with Son do
  begin
    Left := 640;
    Top := 288;
    Width := 49;
    Height := 30;
  end;
  Panel1.Top:=(Principale.Height-Panel1.Height)div 2;
  Panel1.Left:=(Principale.Width-Panel1.Width)div 2;
end;

end.
