begin process at 2012 02 11 01:19:09
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Débutant(e)

 > 

"Jeu de dames"


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

"Jeu de dames"

dimanche 31 mai 2009 à 22:51:02 | "Jeu de dames"

ptitlog


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 ... 


dimanche 31 mai 2009 à 22:53:24 | Re : "Jeu de dames"

ptitlog

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 ... ;]
lundi 1 juin 2009 à 00:28:21 | Re : "Jeu de dames"

Caribensila

Membre Club
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.
lundi 1 juin 2009 à 11:37:22 | Re : "Jeu de dames"

ptitlog

Ok merci, je vais essayer de résoudre ces problèmes toute cette journée ... ;]
lundi 1 juin 2009 à 11:58:07 | Re : "Jeu de dames"

ptitlog


Enfait j'ai oublier ceci qui pourrait être utile à plus d'un d'entre vous ...

http://www2.noelshack.com/uploads/damiers011772.JPG
mardi 2 juin 2009 à 10:55:14 | Re : "Jeu de dames"

ptitlog

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 ...




mardi 2 juin 2009 à 11:12:59 | Re : "Jeu de dames"

ptitlog

Enfait si quelqu'un veut le programme avec les images et tout, pas de problème ... 
lundi 8 juin 2009 à 15:41:08 | Re : "Jeu de dames"

dadja

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


Cette discussion est classée dans : end, pbitmap, if, then, tabdamier


Répondre à ce message

Sujets en rapport avec ce message

Navigateur par onglet [ par frederic6962 ] Bonjour à tous.J'ai créer un navigateur par onglet. J'utilise donc un pagecontrol, un TTabsheet et un webbrowser, le tout créer dynamiquement. J'ai in Creation de processus [ par User8 ] Bonjour, j'ai créé un objet permettant de lancer une application. Celui ci créé le process puis va lire son état à chaque top d'un timer. Des événeme TShiftState de FormKeyDown de la form [ par MohInfo ] Bonsoir à tous lors de l'utilisation de l'évènement FormKeyDown de ma form (FormStyle = fsMDIForm)je veux faire un raccourci clavier pour chaque bout Fonction qui retourne une autre valeur !! [ par grandyaka54 ] Bonjour à tous, J'ai un problème sur lequel je ne m'explique pas. Ma fonction Crypt(Maintenant, '.cry'); que j'utilise dans la fonction btnCryptageCl Boucle For qui stoppe au bout de 99 valeurs [ par bouddha69 ] Bonjour, J'avance petit à petit dans ma programmation et je suis presque au bout. Il me reste un petit problème (qui en fait est vraiment embêtant). TSearchRec et les idtagmp3 [ par eclems ] Bonjour existe t il une fonction qui et avec TSearchRec pour afficher les idtag dans un tlistview en utilisant cette unté unit cmxMP3; interface us simplifier conditions [ par JackNUMBER ] Bonsoir une petite question facile, comment "simplifier" ces conditions : [code=pas]for i:= CheckListBox1.Count -1 downto 0 do if CheckListBox1.Chec affichage message d'erreur [ par Luigi1205 ] Bonjours tout le monde lorsque je click sur le boutton valider et que je ne respecte pas certaine contrainte je voudrait affiche des message d'erreu Pas de rafraichissement des textes dans mes memo après un Read [ par DONALD3D ] Salut, le grand débutant que je suis s'arrache les cheveux sur un truc curieux, mes champs de texte dans les memo prévus ne sont pas raffraichit quan Ouvrir MS Word, Excel etc en plein ecran [ par lordrt ] Bonjour à tous, J'ai un app en Delphi qui ouvre des documents OLE, ex. Word, Excel, PDF entre autres, mais le probleme est que si la fenetre du docume


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales