ptitlog
Messages postés6Date d'inscriptionlundi 20 avril 2009StatutMembreDernière intervention 2 juin 2009
-
31 mai 2009 à 22:51
cs_dadja
Messages postés1Date d'inscriptionsamedi 25 avril 2009StatutMembreDernière intervention12 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 ...
Caribensila
Messages postés2527Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention16 octobre 201918 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!
ptitlog
Messages postés6Date d'inscriptionlundi 20 avril 2009StatutMembreDerniè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 ...
cs_dadja
Messages postés1Date d'inscriptionsamedi 25 avril 2009StatutMembreDernière intervention12 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