begin process at 2010 02 10 07:55:20
  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 Spin edit [ par watrem ] bonjour , certainement suite a une mauvaise manip j'ai une erreur dans le "source" du spin edit , j'ai reinstaller delphi et l'erreur est toujours pre Error E/S 32 sur ecriture et suppresion [ par te56350 ] slt tt le mondej'Ai besoin d'une solution pour mon projet en cour SVPMon projet gère des comptes utilisAteurs Et qu'An j'enregistre des comptes çA fon Apel de fonction sous scilab [ par CIaco ] B'jour ! A tous ! J'ai un petit soucis avec Scilab pour appeler une fonction correctement enfin je crois...      J'ai taper cette fonction 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 Recuperer valeur champs d'un site format flashplayer [ par Ra_andry ] Andry slt tout le monde, Existe t-il une commande API ou autre pour recuperer la valeur d'un champ d'un site web qui est en flashplayer, en HTML c'e choix radiobutton [ par watrem ] Bonjour voila j'ai installer sur une fiche 2 radiobutton , chaque radio button a pour fonction de ranger des donnees numeriques soit par fichier de 20 Question aux internautes [ par Bacterius ] Bonjour, je voudrais juste savoir s'il est possible d'exprimer deux résultats d'une opération sans passer par "begin" "end" .Exemple :begin         if Scroll notification dans un TRichEdit [ par chesnetda ] Bonjour à tous,J'ai un question à priori simple, mais usr laquelle je butte depuis plusieurs jours: je voudrais savoir quand un utilisateur clique sur


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

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 (3)

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