Mastermind

Résolu
Bursteam Messages postés 3 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 13 décembre 2009 - 2 juin 2009 à 10:23
Bursteam Messages postés 3 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 13 décembre 2009 - 8 juin 2009 à 09:34
Bonjours a tous, voila je dois programmer un jeux en delphi comme projet de fin d'année et j'ai quelque petit problème pour coder les couleurs mal placées. Est ce que quelqu'un pourrai m'aider svp?

voila mon fichier dpr:
unit UJeu;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, Grids, ExtCtrls, jpeg, Menus;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    Menu1: TMenuItem;
    Image1: TImage;
    BitBtnjaune: TBitBtn;
    BitBtnrouge: TBitBtn;
    BitBtnnoir: TBitBtn;
    BitBtnbleu: TBitBtn;
    BitBtnvert: TBitBtn;
    Nouveau1: TMenuItem;
    Aide1: TMenuItem;
    N1: TMenuItem;
    Quitter1: TMenuItem;
    Panel3: TPanel;
    Shape1: TShape;
    Shape2: TShape;
    Shape3: TShape;
    Shape4: TShape;
    Shape5: TShape;
    StringGrid1: TStringGrid;
    Button1: TButton;
    StringGrid2: TStringGrid;
    Button2: TButton;
    procedure Nouveau1Click(Sender: TObject);
    procedure Quitter1Click(Sender: TObject);
    procedure BitBtnjauneClick(Sender: TObject);
    procedure BitBtnrougeClick(Sender: TObject);
    procedure BitBtnnoirClick(Sender: TObject);
    procedure BitBtnbleuClick(Sender: TObject);
    procedure BitBtnvertClick(Sender: TObject);
    procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    procedure Button1Click(Sender: TObject);
    procedure StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    procedure Button2Click(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  couleur_ordi : array[1..5] of Tcolor;
  couleur_joueur:array[1..5] of Tcolor;
  couleur_bonne:array[1..5] of Tcolor;
  couleur_mauvaise:array[0..5] of Tcolor;
  jeu_complet : array[0..4 , 0..9] of Tcolor;
  jeu_placer : array[0..4,0..0] of Tcolor;
  procedure affiche;
  end;

var
  Form1: TForm1;
  cpt,cpt2,nb:integer;
implementation
var ligne:integer;
{$R *.dfm}
procedure TForm1.affiche;
var l,k,nbbienplacer:integer;
    dejatrouve:Boolean;
begin
nbbienplacer:=0;
 //mise en place des couleur du joueur dans le tableau
jeu_complet[0,ligne] := couleur_joueur[1];
jeu_complet[1,ligne] := couleur_joueur[2];
jeu_complet[2,ligne] := couleur_joueur[3];
jeu_complet[3,ligne] := couleur_joueur[4];
jeu_complet[4,ligne] := couleur_joueur[5];
ligne := ligne +1;
StringGrid1.Repaint;

//remise du compteur à zero

cpt2:=0;

//affichage du résultat

    //affichage des bien placées

     for l := 1 to 5 do
     begin
        if couleur_ordi[l]=couleur_joueur[l] then
        begin
           couleur_bonne[l]:=couleur_joueur[l];
           nbbienplacer:=nbbienplacer+1;
        end;
    end;
    for l := 1 to 5 do
    begin
      dejatrouve := false ;
      for k := 1 to 5 do
      begin
         if dejatrouve = false then
         begin
            if k<>l then
            begin
               couleur_bonne[l]:=clgray;
               dejatrouve := true;
            end;
         end;
      end;
    end;
//placement des couleurs dans le jeux du joueur
jeu_placer[0,0]:= couleur_bonne[1];
jeu_placer[1,0] := couleur_bonne[2];
jeu_placer[2,0] := couleur_bonne[3];
jeu_placer[3,0] := couleur_bonne[4];
jeu_placer[4,0] := couleur_bonne[5];
StringGrid2.Repaint;

    //affichage si gagner ou perdu

       if nbbienplacer=5 then
       begin
          ShowMessage('Bravo, vous avez gagnez');
          Button1.visible:=false;
          BitBtnjaune.Visible:=false;
          BitBtnrouge.Visible:=false;
          BitBtnnoir.Visible:=false;
          BitBtnbleu.Visible:=false;
          BitBtnvert.Visible:=false;
       end;

       if (ligne=10) and (nbbienplacer<>5) then
       begin
          ShowMessage('Désolé, vous avez perdu');
          Button1.visible:=false;
          BitBtnjaune.Visible:=false;
          BitBtnrouge.Visible:=false;
          BitBtnnoir.Visible:=false;
          BitBtnbleu.Visible:=false;
          BitBtnvert.Visible:=false;
       end;

// remise en blanc des shape

Shape1.Brush.Color:=clWhite;
Shape2.Brush.Color:=clWhite;
Shape3.Brush.Color:=clWhite;
Shape4.Brush.Color:=clWhite;
Shape5.Brush.Color:=clWhite;
cpt:=1;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  affiche;
end;

procedure TForm1.Button2Click(Sender: TObject);
var co2,l,k:integer;
begin
//remise en blanc de tous sauf des couleurs de l'ordi
for co2 := 0 to 4 do
    jeu_placer[co2,0] := clWhite;
StringGrid2.Repaint;

for l := 1 to 5 do
couleur_bonne[l]:=clwhite;
StringGrid2.Repaint;

for k := 1 to 5 do
couleur_joueur[k]:=clwhite;
StringGrid2.Repaint;

Shape1.Brush.Color:=clWhite;
Shape2.Brush.Color:=clWhite;
Shape3.Brush.Color:=clWhite;
Shape4.Brush.Color:=clWhite;
Shape5.Brush.Color:=clWhite;

cpt:=1;
end;

procedure TForm1.Nouveau1Click(Sender: TObject);
var i:integer;
    c:array[1..5] of Tcolor ;
    li,co,li2,co2: Integer;
  l: Integer;
begin
randomize;

//mise en place des couleur dans le tableau  de l'ordi

c[1]:=clyellow;
c[2]:=clred;
c[3]:=clblack;
c[4]:=clblue;
c[5]:=clgreen;
for I := 1 to 5 do
   couleur_ordi[i]:=c[1+random(5)];

   //les shape et le bouton valider redevnienne vissible si on a fait nouveau

   Button1.visible:=true;
   BitBtnjaune.Visible:=true;
   BitBtnrouge.Visible:=true;
   BitBtnnoir.Visible:=true;
   BitBtnbleu.Visible:=true;
   BitBtnvert.Visible:=true;

   // remise en blanc des shape

Shape1.Brush.Color:=clWhite;
Shape2.Brush.Color:=clWhite;
Shape3.Brush.Color:=clWhite;
Shape4.Brush.Color:=clWhite;
Shape5.Brush.Color:=clWhite;

   //met le compteur a 1 pour pouvoir mettre les couleur dans les shapes

cpt:=1;
ligne:=0;
for li := 0 to 9 do
  for co := 0 to 4 do
    jeu_complet[co,li] := clWhite;
StringGrid1.Repaint;

  for co2 := 0 to 4 do
    jeu_placer[co2,0] := clWhite;
StringGrid2.Repaint;

for l := 1 to 5 do
couleur_bonne[l]:=clwhite;
StringGrid2.Repaint;

end;

procedure TForm1.Quitter1Click(Sender: TObject);
begin
Application.Terminate;
end;

//mise en placer des couleur dans le stringgrid

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin

   begin
    StringGrid1.canvas.Brush.Color:=jeu_complet[acol,arow];
    StringGrid1.Canvas.FillRect(rect);
    end;

end;

procedure TForm1.StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
    StringGrid2.canvas.Brush.Color:=jeu_placer[acol,arow];
    StringGrid2.Canvas.FillRect(rect);
end;

//mise en placer des couleur dans les shapes pour que le joueur vois sa selection

procedure TForm1.BitBtnjauneClick(Sender: TObject);
var co2,l:integer;
begin
for co2 := 0 to 4 do
    jeu_placer[co2,0] := clWhite;
StringGrid2.Repaint;

for l := 1 to 5 do
couleur_bonne[l]:=clwhite;
StringGrid2.Repaint;
if (cpt=1)
        then
                begin
                        shape1.Brush.color := clyellow;
                        couleur_joueur[1]:=clyellow;
                        cpt:=cpt+1;

                end
                else
if (cpt=2)
        then
                begin
                        shape2.Brush.color := clyellow;
                        couleur_joueur[2]:=clyellow;
                        cpt:=cpt+1;
                end
                else
if (cpt=3)
        then
                begin
                        shape3.Brush.color := clyellow;
                        couleur_joueur[3]:=clyellow;
                        cpt:=cpt+1;
                end
                else
if (cpt=4)
        then
                begin
                        shape4.Brush.color := clyellow;
                        couleur_joueur[4]:=clyellow;
                        cpt:=cpt+1;
                end
                else
if (cpt=5)
        then
                begin
                        shape5.Brush.color := clyellow;
                        couleur_joueur[5]:=clyellow;
                        cpt:=cpt+1;
                end
end;

procedure TForm1.BitBtnrougeClick(Sender: TObject);
var co2,l:integer;
begin
for co2 := 0 to 4 do
    jeu_placer[co2,0] := clWhite;
StringGrid2.Repaint;

for l := 1 to 5 do
couleur_bonne[l]:=clwhite;
StringGrid2.Repaint;

if (cpt=1)
        then
                begin
                        shape1.Brush.color := clred;
                        couleur_joueur[1]:=clred;
                        cpt:=cpt+1;
                end
                else
if (cpt=2)
        then
                begin
                        shape2.Brush.color := clred;
                        couleur_joueur[2]:=clred;
                        cpt:=cpt+1;
                end
                else
if (cpt=3)
        then
                begin
                        shape3.Brush.color := clred;
                        couleur_joueur[3]:=clred;
                        cpt:=cpt+1;
                end
                else
if (cpt=4)
        then
                begin
                        shape4.Brush.color := clred;
                        couleur_joueur[4]:=clred;
                        cpt:=cpt+1;
                end
                else
if (cpt=5)
        then
                begin
                        shape5.Brush.color := clred;
                        couleur_joueur[5]:=clred;
                        cpt:=cpt+1;
                end
end;

procedure TForm1.BitBtnnoirClick(Sender: TObject);
var co2,l:integer;
begin
for co2 := 0 to 4 do
    jeu_placer[co2,0] := clWhite;
StringGrid2.Repaint;

for l := 1 to 5 do
couleur_bonne[l]:=clwhite;
StringGrid2.Repaint;

if (cpt=1)
        then
                begin
                        shape1.Brush.color := clblack;
                        couleur_joueur[1]:=clblack;
                        cpt:=cpt+1;
                end
                else
if (cpt=2)
        then
                begin
                        shape2.Brush.color := clblack;
                        couleur_joueur[2]:=clblack;
                        cpt:=cpt+1;
                end
                else
if (cpt=3)
        then
                begin
                        shape3.Brush.color := clblack;
                        couleur_joueur[3]:=clblack;
                        cpt:=cpt+1;
                end
                else
if (cpt=4)
        then
                begin
                        shape4.Brush.color := clblack;
                        couleur_joueur[4]:=clblack;
                        cpt:=cpt+1;
                end
                else
if (cpt=5)
        then
                begin
                        shape5.Brush.color := clblack;
                        couleur_joueur[5]:=clblack;
                        cpt:=cpt+1;
                end
end;

procedure TForm1.BitBtnbleuClick(Sender: TObject);
var co2,l:integer;
begin
for co2 := 0 to 4 do
    jeu_placer[co2,0] := clWhite;
StringGrid2.Repaint;

for l := 1 to 5 do
couleur_bonne[l]:=clwhite;
StringGrid2.Repaint;

if (cpt=1)
        then
                begin
                        shape1.Brush.color := clblue;
                        couleur_joueur[1]:=clblue;
                        cpt:=cpt+1;
                end
                else
if (cpt=2)
        then
                begin
                        shape2.Brush.color := clblue;
                        couleur_joueur[2]:=clblue;
                        cpt:=cpt+1;
                end
                else
if (cpt=3)
        then
                begin
                        shape3.Brush.color := clblue;
                        couleur_joueur[3]:=clblue;
                        cpt:=cpt+1;
                end
                else
if (cpt=4)
        then
                begin
                        shape4.Brush.color := clblue;
                        couleur_joueur[4]:=clblue;
                        cpt:=cpt+1;
                end
                else
if (cpt=5)
        then
                begin
                        shape5.Brush.color := clblue;
                        couleur_joueur[5]:=clblue;
                        cpt:=cpt+1;
                end
end;

procedure TForm1.BitBtnvertClick(Sender: TObject);
var co2,l:integer;
begin
for co2 := 0 to 4 do
    jeu_placer[co2,0] := clWhite;
StringGrid2.Repaint;

for l := 1 to 5 do
couleur_bonne[l]:=clwhite;
StringGrid2.Repaint;

if (cpt=1)
        then
                begin
                        shape1.Brush.color := clgreen;
                        couleur_joueur[1]:=clgreen;
                        cpt:=cpt+1;
                end
                else
if (cpt=2)
        then
                begin
                        shape2.Brush.color := clgreen;
                        couleur_joueur[2]:=clgreen;
                        cpt:=cpt+1;
                end
                else
if (cpt=3)
        then
                begin
                        shape3.Brush.color := clgreen;
                        couleur_joueur[3]:=clgreen;
                        cpt:=cpt+1;
                end
                else
if (cpt=4)
        then
                begin
                        shape4.Brush.color := clgreen;
                        couleur_joueur[4]:=clgreen;
                        cpt:=cpt+1;
                end
                else
if (cpt=5)
        then
                begin
                        shape5.Brush.color := clgreen;
                        couleur_joueur[5]:=clgreen;
                        cpt:=cpt+1;
                end
end;

end.

Merci d'avance.

1 réponse

Bursteam Messages postés 3 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 13 décembre 2009
8 juin 2009 à 09:34
Dsl mais c'est déja trop compliquer pour mon niveau en delphi donc je ne saurais pas expliquer et le prof verra que c'est pas de moi.Donc faudrai un calcule de mal placer plus facile dsl.
(dsl si je rép pas très vite j'ai pas delphi chez moi g que a l'école)
0
Rejoignez-nous