"Jeu de dames"

ptitlog Messages postés 6 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 2 juin 2009 - 31 mai 2009 à 22:51
cs_dadja Messages postés 1 Date d'inscription samedi 25 avril 2009 Statut Membre Dernière intervention 12 juin 2009 - 8 juin 2009 à 15:41
Bonjour à tous, je suis inscrit su le site depuis un petit temps étant donné que je viens souvent me ressourcer ici cependant je n'ai encore jamais posté (il me semble) ...

Donc voilà,  je suis étudiant en dernière année, avant d'attaquer les études supérieurs. Et en cette fin d'année, je dois réaliser un jeu de dames. Mais étant donné que l'on s'y est pris un peu tard, mon Jeu de Dames ne sera pas complet et ne pourra pas tout faire mais pour le moment, je suis un petit peu calé sur 2 petits problèmes (pas assez réfléchi, ... ?), fin soit. Donc c'est pour cela que je demande votre aide

Voici mon code :

implementation
var ColSelect, RowSelect : Integer;
    premierClic, joueur1, joueur2 : Boolean;
    tabDamier : array [0..9,0..9] of integer;
      // Le damier en (colonne, ligne).
      // Les indices vont de 0 à 9 pour correspondre au DrawGrid.
      // Les valeurs possibles dans le tableau sont
      // 0 : case vide
      // 1 : case noire
      // 2 : pion blanc
      // 3 : pion noir

    x1, y1, x2, y2:integer;
    blanc : Boolean;

{$R *.dfm}

procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var pbitmap:timage;
begin
   // Dessiner le damier.
   // Les pions et les cases doivent être dessinés par une procédure spéciale (AFFICHE)
   // qui se servira du tableau tabDamier.
  if tabDamier [acol,arow] = 0 then
  begin
   pbitmap:=timage.create(self);
   pbitmap.picture.loadfromfile('Casevide.bmp');
   drawgrid1.canvas.StretchDraw(rect,pbitmap.picture.graphic);
  end;

  if tabDamier [acol,arow] = 1 then
  begin
   pbitmap:=timage.create(self);
   pbitmap.picture.loadfromfile('noirvide.bmp');
   drawgrid1.canvas.StretchDraw(rect,pbitmap.picture.graphic);
  end;

  if tabDamier [acol,arow] = 2 then
  begin
    pbitmap:=timage.create(self);
    pbitmap.picture.loadfromfile('pionblanc.bmp');
    drawgrid1.canvas.StretchDraw(rect,pbitmap.picture.graphic);
  end;

  if tabDamier [acol,arow] = 3 then
  begin
    pbitmap:=timage.create(self);
    pbitmap.picture.loadfromfile('pionfonce.bmp');
    drawgrid1.canvas.StretchDraw(rect,pbitmap.picture.graphic);
  end;
end;

procedure TForm1.DrawGrid1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
//Pourvoir déplacer les pions
  //Après le premier clic, la case deviens toute noire et après le deuxième
  //clic, la case devient un pion noir ou blanc.
  if premierClic = true then //Premier clic
  begin
    x1:=(x div 41);
    y1:=(y div 41);
    if joueur1=false then
    if (tabDamier[x1,y1] = 3) then
      Abort;
   
    if joueur2=false then
    if (tabDamier[x1,y1] = 2) then    //Ne fais rien comme c'est au premier joueur de jouer
      Abort;

    if (tabDamier[x1,y1] = 0) or (tabDamier[x1,y1] = 1)   then   //Ne fais rien si on clic sur une case (vide) blanche ou noir
        Abort;
    if tabDamier[x1,y1] = 2 then
      blanc := True
    else
      blanc := False;
  end;

  if premierClic = false then    //Deuxième clic
  begin
    x2:=(x div 41);
    y2:=(y div 41);

   if (tabDamier[x2,y2] <> 1)   then        // Ne fait rien si on essaye de déplacer un pion sur une case autre que noir
        Abort;

(*     if (tabDamier[x1+1,y1+1] = 2) or (tabDamier[x1-1,y1+1] = 2) then
     begin
      tabDamier[x1+1,y1+1]:=1;       //Pour quand on passe au dessus d'un pion (image), que l'autre pion (image) se supprime
      tabDamier[x2,y2]:=3;      *)
     
    // Jeu changement de couleur "physique".
    if blanc then
    begin
      tabDamier[x1,y1] := 1;
      tabDamier[x2,y2] := 2;
    end
    else
    begin
      tabDamier[x1,y1] := 1;
      tabDamier[x2,y2] := 3;
    end
  end;

  //end;

 joueur2:= true;      //Pour que le changement de joueur s'effectue
 joueur1:= false;
  premierClic := not premierClic; //Change la valeur du premier clic
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
premierClic := True;
end;

procedure TForm1.Nouvellepartie1Click(Sender: TObject);
begin
premierClic:=true;
joueur1:=true;
joueur2:=false;
// Remplissage de la première ligne du damier avec 0 ou 3
tabDamier[0,0]:=0;
tabDamier[1,0]:=3;
tabDamier[2,0]:=0;
tabDamier[3,0]:=3;
tabDamier[4,0]:=0;
tabDamier[5,0]:=3;
tabDamier[6,0]:=0;
tabDamier[7,0]:=3;
tabDamier[8,0]:=0;
tabDamier[9,0]:=3;
//Ainsi de suite pour tout le damier

// Affiche le tableau dans la grille
DrawGrid1.Repaint;
end;
end.

Mes 2 problèmes sont : -Pouvoir faire un tour par tour (joueur1 puis joueur2)
                                    -De pouvoir reconnaitre quand par exemple avec un pion blanc je passe au dessus d'un pion   noir et donc le noir se supprime.

Tout se passe dans Drawgrid1MouseDown, j'ai déjà tenté quelques petites choses mais il me semble que je me dirige dans un mauvais sens. (j'ai essayé de mettre pas mal de commentaire pour que vous voyer où est réellement mon problème).

J'espère être assez clair et ne pas demandez de question "idiote"...

Je tenais aussi à précisez que c'est sur Delphi Pascal et que je ne suis pas du tout une "bête" en programmation.

Merci d'avance à ceux qui n'hésiterons pas à me donner un petit coup de pouce ... 

7 réponses

ptitlog Messages postés 6 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 2 juin 2009
31 mai 2009 à 22:53
J'ai oublier de dire que j'ai déjà fait une recherche sur certain Jeu de Dames mais ils sont tous (si je ne me trompe pas) coder différemment.

Bonne soirée à tous ... ;]
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
1 juin 2009 à 00:28
Salut,

Je ne suis pas spécialiste des jeux de plateau et beaucoup ici te répondront mieux que moi.

Cependant, il y a quelque chose qui me choque dans ta méthodologie. Tu fonces sans avoir résolu le problème de la 'prise' et du 'tour par tour'.
Je pense que ça vaudrait le coup que tu prennes un peu de temps pour coucher tout ça sur le papier avant d'utiliser ton clavier.
Ce ne sera pas du temps de perdu, crois-moi!

Bon courage.
0
ptitlog Messages postés 6 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 2 juin 2009
1 juin 2009 à 11:37
Ok merci, je vais essayer de résoudre ces problèmes toute cette journée ... ;]
0
ptitlog Messages postés 6 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 2 juin 2009
1 juin 2009 à 11:58
Enfait j'ai oublier ceci qui pourrait être utile à plus d'un d'entre vous ...

http://www2.noelshack.com/uploads/damiers011772.JPG
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ptitlog Messages postés 6 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 2 juin 2009
2 juin 2009 à 10:55
Bon voila, c'est la dernière fois que je viens vous embeter ...

Et je ne vois vraiment pas où mon(mes) erreur(s) (sûrement bête) se trouve(nt), du moins pour pouvoir jouer au tour par tour. J'ai essayé avec des if à la fin et tout ça, mais rien n'y fait (et sur papier je n'ai pas su comprendre beaucoup mieux non plus) ...

Pour ce qui est du fait de sauter au dessus d'un pion et de le supprimer, ma seule idée est ce que je mis en commentaire.

C'est pour la semaine prochaine, donc si une âme charitable passe par là, son aide me serais vraiment géniale ...
0
ptitlog Messages postés 6 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 2 juin 2009
2 juin 2009 à 11:12
Enfait si quelqu'un veut le programme avec les images et tout, pas de problème ... 
0
cs_dadja Messages postés 1 Date d'inscription samedi 25 avril 2009 Statut Membre Dernière intervention 12 juin 2009
8 juin 2009 à 15:41
slt petit log moi je veux bien ton programme je vais l'ameliorer au mieux que je pourrai  voici mon adresse electronique
xfillboom@hotmail.com
ou encore bassou18@yahoo.ca
merci bye
0
Rejoignez-nous