begin process at 2012 05 27 15:53:12
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Jeux

 > ECHECS (VISUAL C++)

ECHECS (VISUAL C++)


 Information sur la source

Note :
6,67 / 10 - par 3 personnes
6,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Jeux Niveau :Débutant Date de création :12/03/2002 Date de mise à jour :04/04/2002 08:50:03 Vu / téléchargé :8 284 / 768

Auteur : Wepawetmose

Ecrire un message privé
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

Voilà sans aucun doute le programme le plus long et le plus compliqué que j'ai jamais fait! C'est un jeu d'échecs pour deux. Seul petit problème: il ne gère pas l'échec et mat, et le déplacement du pion mérite quelques améliorations. Sinon, amusez-vous bien et n'oubliez pas de télécharger le ZIP.
NE FAITES SURTOUT PAS DE COPIER-COLLER!!!

Source

  • #include<iostream.h>
  • #include<stdio.h>
  • struct liste
  • {
  • int t[40];
  • int nb; //nombre de cases occupées dans chaque liste
  • };
  • struct joueur
  • {
  • char nom[10];
  • liste l,lp,lc,ld,lr,lf,lt,ltot;
  • //lp est la liste des pions, lc la liste des cavaliers, ...
  • //ltot regroupe toutes les listes
  • //l sert de liste des coups possibles dans les fonctions
  • };
  • void presente(joueur &j1,joueur &j2)
  • {
  • cout<<"Joueur 1, tape ton nom: ";cin>>j1.nom;
  • cout<<"Joueur 2, tape ton nom: ";cin>>j2.nom;
  • }
  • int saisir()
  • {
  • char t[5];
  • int x,y;
  • bool valid;
  • do{
  • valid=true;
  • cout<<" case: ";
  • cin>>t;
  • if (!(t[0]>='A' && t[0]<='H')) valid=false;
  • if (!(t[1]>='1' && t[1]<='8')) valid=false;
  • //non valide si la case n'est pas comprise entre A1 et H8
  • if (t[2]!='\0') valid=false;
  • //ou s'il y a plus de 2 caractères tapés
  • if (valid==false) cout<<"Case non valide!"<<endl;
  • }while (valid==false);
  • y=(t[1]-'1')*8;
  • x=t[0]-'A';
  • x=x+y;
  • //on convertit la saisie en un entier compris entre 0 et 63
  • return x;
  • }
  • void init_liste(liste &l)
  • {
  • l.nb=0;
  • }
  • void ajoute(int i,liste &l)
  • //ajoute une case donnée à une liste donnée
  • {
  • if (i>=0 && i<=63)
  • {
  • l.t[l.nb]=i;
  • l.nb++;
  • }
  • }
  • void supprime(int n,liste &l)
  • //supprime une case donnée d'une liste donnée
  • {
  • int i,numero=l.nb;
  • for (i=0;i<l.nb;i++)
  • {
  • if (n==l.t[i]) numero=i;
  • }
  • for (i=numero;i<l.nb;i++) l.t[i]=l.t[i+1];
  • if (numero!=l.nb) l.nb--;
  • }
  • void aff_case(int n)
  • {
  • if (n>=0 && n<=63)
  • {
  • int y;
  • char x;
  • y=n/8+1;
  • x=n-8*(y-1)+65;
  • cout<<x<<y;
  • }
  • }
  • void affiche(liste l)
  • {
  • int i;
  • for (i=0;i<l.nb;i++)
  • {
  • aff_case(l.t[i]);
  • cout<<" ";
  • }
  • }
  • int test(int n,liste l)
  • //teste si une case donnée est dans une liste donnée
  • //renvoie l'indice de la case dans la liste si elle est trouvée
  • //renvoie -1 sinon
  • {
  • int i;
  • for (i=0;i<l.nb;i++)
  • {
  • if (l.t[i]==n) return i;
  • }
  • return -1;
  • }
  • int cavalier(joueur &j1,joueur &j2)
  • {
  • int i,j,n,z=1;
  • init_liste(j1.l);
  • cout<<"Cavalier"<<endl;
  • do{
  • n=saisir();
  • i=test(n,j1.lc);
  • //la case saisie est-elle dans la liste des cavaliers?
  • if (i<0) cout<<"Le cavalier n'existe pas!"<<endl;
  • }while (i<0);
  • int y,dir1,dir2,dir3,dir4,dir5,dir6,dir7,dir8;
  • char x;
  • //x est la lettre de la case, y son numéro
  • //dir1, dir2, ... sont les différentes directions possibles
  • dir1=n+17;dir2=n+10;dir3=n-6;dir4=n-15;
  • dir5=n-17;dir6=n-10;dir7=n+6;dir8=n+15;
  • y=n/8+1;x=n-8*(y-1)+65;
  • if (x=='A') //si le cavalier est dans la colonne A, ...
  • {dir5=dir5+80;dir6=dir6+80;dir7=dir7+80;dir8=dir8+80;}
  • if (x=='B') //si le cavalier est dans la colonne B, ...
  • {dir6=dir6+80;dir7=dir7+80;}
  • if (x=='G') //...
  • {dir2=dir2+80;dir3=dir3+80;}
  • if (x=='H')
  • {dir1=dir1+80;dir2=dir2+80;dir3=dir3+80;dir4=dir4+80;}
  • if (y==1) //s'il est dans la ligne 1, ...
  • {dir3=dir3+80;dir4=dir4+80;dir5=dir5+80;dir6=dir6+80;}
  • if (y==2) //...
  • {dir4=dir4+80;dir5=dir5+80;}
  • if (y==7)
  • {dir1=dir1+80;dir8=dir8+80;}
  • if (y==8)
  • {dir1=dir1+80;dir2=dir2+80;dir7=dir7+80;dir8=dir8+80;}
  • ajoute(dir1,j1.l);ajoute(dir2,j1.l);ajoute(dir3,j1.l);ajoute(dir4,j1.l);
  • ajoute(dir5,j1.l);ajoute(dir6,j1.l);ajoute(dir7,j1.l);ajoute(dir8,j1.l);
  • //on ajoute les coups possibles à la liste l
  • cout<<" vers la";
  • n=saisir();
  • j=test(n,j1.l);
  • //la case de destination est-elle un coup possible?
  • if (j<0) z=0;
  • else if (test(n,j1.ltot)>=0) z=0;
  • //z=0 si le coup est impossible ou la case déjà prise par j1
  • else j1.lc.t[i]=n;
  • //sinon la case écrase la précédente dans la liste
  • for (i=0;i<j2.ltot.nb;i++) if (n==j2.ltot.t[i] && z==1)
  • {
  • supprime(n,j2.lp);supprime(n,j2.lc);supprime(n,j2.ld);
  • supprime(n,j2.lr);supprime(n,j2.lf);supprime(n,j2.lt);
  • }
  • //si la cavalier prend une pièce de j2, on la supprime
  • return z;
  • //renvoie 1 si le coup a été effectué
  • //renvoie 0 sinon
  • }
  • int dame(joueur &j1,joueur &j2)
  • {
  • int i,j,k,n,r,z=1;
  • init_liste(j1.l);
  • cout<<"Dame"<<endl;
  • do{
  • n=saisir();
  • i=test(n,j1.ld);
  • if (i<0) cout<<"La dame n'existe pas!"<<endl;
  • }while (i<0);
  • int y,d1=n,d2=n,d3=n,d4=n,d5=n,d6=n,d7=n,d8=n;
  • char x;
  • y=n/8+1;x=n-8*(y-1)+65;
  • while(y!=8){r=0;d1=d1+8;for(k=0;k<j1.ltot.nb;k++)if(d1==j1.ltot.t[k])r=1;for(k=0;k<j2.ltot.nb;k++)if(d1==j2.ltot.t[k]){r=1;ajoute(d1,j1.l);}if(r==1)break;ajoute(d1,j1.l);y=d1/8+1;}
  • y=n/8+1;x=n-8*(y-1)+65;
  • while(y!=8 && x!='H'){r=0;d2=d2+9;for(k=0;k<j1.ltot.nb;k++)if(d2==j1.ltot.t[k])r=1;for(k=0;k<j2.ltot.nb;k++)if(d2==j2.ltot.t[k]){r=1;ajoute(d2,j1.l);}if(r==1)break;ajoute(d2,j1.l);y=d2/8+1;x=d2-8*(y-1)+65;}
  • y=n/8+1;x=n-8*(y-1)+65;
  • while(x!='H'){r=0;d3++;for(k=0;k<j1.ltot.nb;k++)if(d3==j1.ltot.t[k])r=1;for(k=0;k<j2.ltot.nb;k++)if(d3==j2.ltot.t[k]){r=1;ajoute(d3,j1.l);}if(r==1)break;ajoute(d3,j1.l);y=d3/8+1;x=d3-8*(y-1)+65;}
  • y=n/8+1;x=n-8*(y-1)+65;
  • while(x!='H' && y!=1){r=0;d4=d4-7;for(k=0;k<j1.ltot.nb;k++)if(d4==j1.ltot.t[k])r=1;for(k=0;k<j2.ltot.nb;k++)if(d4==j2.ltot.t[k]){r=1;ajoute(d4,j1.l);}if(r==1)break;ajoute(d4,j1.l);y=d4/8+1;x=d4-8*(y-1)+65;}
  • y=n/8+1;
  • while(y!=1){r=0;d5=d5-8;for(k=0;k<j1.ltot.nb;k++)if(d5==j1.ltot.t[k])r=1;for(k=0;k<j2.ltot.nb;k++)if(d5==j2.ltot.t[k]){r=1;ajoute(d5,j1.l);}if(r==1)break;ajoute(d5,j1.l);y=d5/8+1;}
  • y=n/8+1;x=n-8*(y-1)+65;
  • while(x!='A' && y!=1){r=0;d6=d6-9;for(k=0;k<j1.ltot.nb;k++)if(d6==j1.ltot.t[k])r=1;for(k=0;k<j2.ltot.nb;k++)if(d6=j2.ltot.t[k]){r=1;ajoute(d6,j1.l);}if(r==1)break;ajoute(d6,j1.l);y=d6/8+1;x=d6-8*(y-1)+65;}
  • y=n/8+1;x=n-8*(y-1)+65;
  • while(x!='A'){r=0;d7--;for(k=0;k<j1.ltot.nb;k++)if(d7==j1.ltot.t[k])r=1;for(k=0;k<j2.ltot.nb;k++)if(d7==j2.ltot.t[k]){r=1;ajoute(d7,j1.l);}if(r==1)break;ajoute(d7,j1.l);y=d7/8+1;x=d7-8*(y-1)+65;}
  • y=n/8+1;x=n-8*(y-1)+65;
  • while(x!='A' && y!=8){r=0;d8=d8+7;for(k=0;k<j1.ltot.nb;k++)if(d8==j1.ltot.t[k])r=1;for(k=0;k<j2.ltot.nb;k++)if(d8==j2.ltot.t[k]){r=1;ajoute(d8,j1.l);}if(r==1)break;ajoute(d8,j1.l);y=d8/8+1;x=d8-8*(y-1)+65;}
  • //pour chaque direction, on ajoute à la liste toutes les cases
  • //jusqu'à ce qu'on rencontre une case occupée ou le bord du jeu
  • cout<<" vers la";
  • n=saisir();
  • j=test(n,j1.l);
  • if (j<0) z=0;
  • else j1.ld.t[i]=n;
  • for (i=0;i<j2.ltot.nb;i++) if (n==j2.ltot.t[i] && z==1)
  • {
  • supprime(n,j2.lp);supprime(n,j2.lc);supprime(n,j2.ld);
  • supprime(n,j2.lr);supprime(n,j2.lf);supprime(n,j2.lt);
  • }
  • return z;
  • }
  • int roi(joueur &j1,joueur &j2)
  • {
  • int i,j,n,z=1;
  • init_liste(j1.l);
  • cout<<"Roi"<<endl;
  • do{
  • n=saisir();
  • i=test(n,j1.lr);
  • if (i<0) cout<<"Le roi n'existe pas!"<<endl;
  • }while (i<0);
  • int y,d1,d2,d3,d4,d5,d6,d7,d8;
  • char x;
  • d1=n+8;d2=n+9;d3=n+1;d4=n-7;
  • d5=n-8;d6=n-9;d7=n-1;d8=n+7;
  • y=n/8+1;x=n-8*(y-1)+65;
  • if (x=='A')
  • {d6=d6+80;d7=d7+80;d8=d8+80;}
  • if (x=='H')
  • {d2=d2+80;d3=d3+80;d4=d4+80;}
  • if (y==1)
  • {d4=d4+80;d5=d5+80;d6=d6+80;}
  • if (y==8)
  • {d1=d1+80;d2=d2+80;d8=d8+80;}
  • ajoute(d1,j1.l);ajoute(d2,j1.l);
  • ajoute(d3,j1.l);ajoute(d4,j1.l);
  • ajoute(d5,j1.l);ajoute(d6,j1.l);
  • ajoute(d7,j1.l);ajoute(d8,j1.l);
  • cout<<" vers la";
  • n=saisir();
  • j=test(n,j1.l);
  • if (j<0) z=0;
  • else if (test(n,j1.ltot)>=0) z=0;
  • else j1.lr.t[i]=n;
  • for (i=0;i<j2.ltot.nb;i++) if (n==j2.ltot.t[i] && z==1)
  • {
  • supprime(n,j2.lp);supprime(n,j2.lc);supprime(n,j2.ld);
  • supprime(n,j2.lr);supprime(n,j2.lf);supprime(n,j2.lt);
  • }
  • return z;
  • }
  • int fou(joueur &j1,joueur &j2)
  • {
  • int i,j,n,r,k,z=1;
  • init_liste(j1.l);
  • cout<<"Fou"<<endl;
  • do{
  • n=saisir();
  • i=test(n,j1.lf);
  • if (i<0) cout<<"Le fou n'existe pas!"<<endl;
  • }while (i<0);
  • int y,d1=n,d2=n,d3=n,d4=n;
  • char x;
  • y=n/8+1;x=n-8*(y-1)+65;
  • while(y!=8 && x!='H'){r=0;d1=d1+9;for(k=0;k<j1.ltot.nb;k++)if(d1==j1.ltot.t[k])r=1;for(k=0;k<j2.ltot.nb;k++)if(d1==j2.ltot.t[k]){r=1;ajoute(d1,j1.l);}if(r==1)break;ajoute(d1,j1.l);y=d1/8+1;x=d1-8*(y-1)+65;}
  • y=n/8+1;x=n-8*(y-1)+65;
  • while(x!='H' && y!=1){r=0;d2=d2-7;for(k=0;k<j1.ltot.nb;k++)if(d2==j1.ltot.t[k])r=1;for(k=0;k<j2.ltot.nb;k++)if(d2==j2.ltot.t[k]){r=1;ajoute(d2,j1.l);}if(r==1)break;ajoute(d2,j1.l);y=d2/8+1;x=d2-8*(y-1)+65;}
  • y=n/8+1;x=n-8*(y-1)+65;
  • while(x!='A' && y!=1){r=0;d3=d3-9;for(k=0;k<j1.ltot.nb;k++)if(d3==j1.ltot.t[k])r=1;for(k=0;k<j2.ltot.nb;k++)if(d3==j2.ltot.t[k]){r=1;ajoute(d3,j1.l);}if(r==1)break;ajoute(d3,j1.l);y=d3/8+1;x=d3-8*(y-1)+65;}
  • y=n/8+1;x=n-8*(y-1)+65;
  • while(x!='A' && y!=8){r=0;d4=d4+7;for(k=0;k<j1.ltot.nb;k++)if(d4==j1.ltot.t[k])r=1;for(k=0;k<j2.ltot.nb;k++)if(d4==j2.ltot.t[k]){r=1;ajoute(d4,j1.l);}if(r==1)break;ajoute(d4,j1.l);y=d4/8+1;x=d4-8*(y-1)+65;}
  • cout<<" vers la";
  • n=saisir();
  • j=test(n,j1.l);
  • if (j<0) z=0;
  • else j1.lf.t[i]=n;
  • for (i=0;i<j2.ltot.nb;i++) if (n==j2.ltot.t[i] && z==1)
  • {
  • supprime(n,j2.lp);supprime(n,j2.lc);supprime(n,j2.ld);
  • supprime(n,j2.lr);supprime(n,j2.lf);supprime(n,j2.lt);
  • }
  • return z;
  • }
  • int tour(joueur &j1,joueur &j2)
  • {
  • int i,j,n,r,k,z=1;
  • init_liste(j1.l);
  • cout<<"Tour"<<endl;
  • do{
  • n=saisir();
  • i=test(n,j1.lt);
  • if (i<0) cout<<"La tour n'existe pas!"<<endl;
  • }while (i<0);
  • int y,d1=n,d2=n,d3=n,d4=n;
  • char x;
  • y=n/8+1;x=n-8*(y-1)+65;
  • while(y!=8){r=0;d1=d1+8;for(k=0;k<j1.ltot.nb;k++)if(d1==j1.ltot.t[k])r=1;for(k=0;k<j2.ltot.nb;k++)if(d1==j2.ltot.t[k]){r=1;ajoute(d1,j1.l);}if(r==1)break;ajoute(d1,j1.l);y=d1/8+1;}
  • y=n/8+1;x=n-8*(y-1)+65;
  • while(x!='H'){r=0;d2++;for(k=0;k<j1.ltot.nb;k++)if(d2==j1.ltot.t[k])r=1;for(k=0;k<j2.ltot.nb;k++)if(d2==j2.ltot.t[k]){r=1;ajoute(d2,j1.l);}if(r==1)break;ajoute(d2,j1.l);y=d2/8+1;x=d2-8*(y-1)+65;}
  • y=n/8+1;
  • while(y!=1){r=0;d3=d3-8;for(k=0;k<j1.ltot.nb;k++)if(d3==j1.ltot.t[k])r=1;for(k=0;k<j2.ltot.nb;k++)if(d3==j2.ltot.t[k]){r=1;ajoute(d3,j1.l);}if(r==1)break;ajoute(d3,j1.l);y=d3/8+1;}
  • y=n/8+1;x=n-8*(y-1)+65;
  • while(x!='A'){r=0;d4--;for(k=0;k<j1.ltot.nb;k++)if(d4==j1.ltot.t[k])r=1;for(k=0;k<j2.ltot.nb;k++)if(d4==j2.ltot.t[k]){r=1;ajoute(d4,j1.l);}if(r==1)break;ajoute(d4,j1.l);y=d4/8+1;x=d4-8*(y-1)+65;}
  • cout<<" vers la";
  • n=saisir();
  • j=test(n,j1.l);
  • if (j<0) z=0;
  • else j1.lt.t[i]=n;
  • for (i=0;i<j2.ltot.nb;i++) if (n==j2.ltot.t[i] && z==1)
  • {
  • supprime(n,j2.lp);supprime(n,j2.lc);supprime(n,j2.ld);
  • supprime(n,j2.lr);supprime(n,j2.lf);supprime(n,j2.lt);
  • }
  • return z;
  • }
  • int pion(joueur &j1,joueur &j2)
  • {
  • int i,j,n,z=1;
  • init_liste(j1.l);
  • cout<<"Pion"<<endl;
  • do{
  • n=saisir();
  • i=test(n,j1.lp);
  • if (i<0) cout<<"Le pion n'existe pas!"<<endl;
  • }while (i<0);
  • int y,d1;
  • y=n/8+1;
  • d1=n+8;ajoute(d1,j1.l);
  • if (y==2) {d1=d1+8;ajoute(d1,j1.l);}
  • d1=n-8;ajoute(d1,j1.l);
  • if (y==7) {d1=d1-8;ajoute(d1,j1.l);}
  • d1=n+9;ajoute(d1,j1.l);
  • d1=n-9;ajoute(d1,j1.l);
  • d1=n+7;ajoute(d1,j1.l);
  • d1=n-7;ajoute(d1,j1.l);
  • cout<<" vers la";
  • n=saisir();
  • j=test(n,j1.l);
  • if (j<0) z=0;
  • else if (test(n,j1.ltot)>=0) z=0;
  • else j1.lp.t[i]=n;
  • for (i=0;i<j2.ltot.nb;i++) if (n==j2.ltot.t[i] && z==1)
  • {
  • supprime(n,j2.lp);supprime(n,j2.lc);supprime(n,j2.ld);
  • supprime(n,j2.lr);supprime(n,j2.lf);supprime(n,j2.lt);
  • }
  • return z;
  • }
  • void initializ(joueur &j1,joueur &j2)
  • //initialise les listes de pièces
  • {
  • int i;
  • j1.lp.nb=8;j1.lc.nb=2;j1.ld.nb=1;j1.lr.nb=1;j1.lf.nb=2;j1.lt.nb=2;
  • j2.lp.nb=8;j2.lc.nb=2;j2.ld.nb=1;j2.lr.nb=1;j2.lf.nb=2;j2.lt.nb=2;
  • j1.ld.t[0]=4;j2.ld.t[0]=60;
  • j1.lr.t[0]=3;j2.lr.t[0]=59;
  • j1.lc.t[0]=1;j1.lc.t[1]=6;j2.lc.t[0]=57;j2.lc.t[1]=62;
  • j1.lf.t[0]=2;j1.lf.t[1]=5;j2.lf.t[0]=58;j2.lf.t[1]=61;
  • j1.lt.t[0]=0;j1.lt.t[1]=7;j2.lt.t[0]=56;j2.lt.t[1]=63;
  • for (i=0;i<8;i++) j1.lp.t[i]=i+8;
  • for (i=0;i<8;i++) j2.lp.t[i]=i+48;
  • }
  • void totaliz(joueur &j1)
  • //regroupe toutes les listes de pièces dans la liste ltot du joueur
  • {
  • int i,j=0;
  • for (i=0;i<j1.lp.nb;i++) {j1.ltot.t[j]=j1.lp.t[i];j++;}
  • for (i=0;i<j1.lc.nb;i++) {j1.ltot.t[j]=j1.lc.t[i];j++;}
  • for (i=0;i<j1.ld.nb;i++) {j1.ltot.t[j]=j1.ld.t[i];j++;}
  • for (i=0;i<j1.lr.nb;i++) {j1.ltot.t[j]=j1.lr.t[i];j++;}
  • for (i=0;i<j1.lf.nb;i++) {j1.ltot.t[j]=j1.lf.t[i];j++;}
  • for (i=0;i<j1.lt.nb;i++) {j1.ltot.t[j]=j1.lt.t[i];j++;}
  • j1.ltot.nb=j;
  • }
  • int choix_menu()
  • {
  • int n;
  • cout<<endl;
  • cout<<"Choisis ton coup!\n";
  • cout<<"1. coup de cavalier\n";
  • cout<<"2. coup de dame\n";
  • cout<<"3. coup de roi\n";
  • cout<<"4. coup de fou\n";
  • cout<<"5. coup de tour\n";
  • cout<<"6. coup de pion\n";
  • cout<<"7. quitter\n";
  • cout<<"Ton choix: ";cin>>n;
  • cout<<endl;
  • return n;
  • }
  • void echiquier(joueur j1,joueur j2)
  • {
  • int i,k,x,r;
  • char j;
  • cout<<" ________________________________________________"<<endl;
  • for (i=8;i>0;i--) //boucle parcourant les lignes
  • {
  • cout<<"\xB3 \xB3 \xB3 \xB3 \xB3 \xB3 \xB3 \xB3 \xB3"<<endl;
  • for (j='A';j<='H';j++) //boucle parcourant les colonnes
  • {
  • r=0;
  • x=(j-'A')+(i-1)*8; //x prend la valeur de la case
  • cout<<"\xB3 ";
  • for(k=0;k<16;k++)
  • {
  • if (j1.lp.t[k]==x) {cout<<".";r=1;break;}
  • if (j1.lc.t[k]==x) {cout<<"\x06";r=1;break;}
  • if (j1.ld.t[k]==x) {cout<<"\x03";r=1;break;}
  • if (j1.lr.t[k]==x) {cout<<"\x02";r=1;break;}
  • if (j1.lf.t[k]==x) {cout<<"\x05";r=1;break;}
  • if (j1.lt.t[k]==x) {cout<<"\x04";r=1;break;}
  • if (j2.lp.t[k]==x) {cout<<"p";r=1;break;}
  • if (j2.lc.t[k]==x) {cout<<"c";r=1;break;}
  • if (j2.ld.t[k]==x) {cout<<"d";r=1;break;}
  • if (j2.lr.t[k]==x) {cout<<"\x01";r=1;break;}
  • if (j2.lf.t[k]==x) {cout<<"f";r=1;break;}
  • if (j2.lt.t[k]==x) {cout<<"t";r=1;break;}
  • }
  • if (r==0) cout<<" "; //s'il n'y a rien dans cette case...
  • cout<<" ";
  • }
  • cout<<"\xB3"<<i<<endl;
  • cout<<"\xB3_____\xB3_____\xB3_____\xB3_____\xB3_____\xB3_____\xB3_____\xB3_____\xB3"<<endl;
  • }
  • cout<<" A B C D E F G H"<<endl;
  • getc(stdin); //attend la frappe de la touche ENTREE
  • }
  • void menu(joueur j1,joueur j2)
  • {
  • int choix,coup=0,j,z=1;
  • //coup est le numéro du coup à jouer
  • //j est le numéro du joueur dont c'est le tour de jouer
  • initializ(j1,j2);
  • do
  • {
  • echiquier(j1,j2);
  • if (z==1) coup++;
  • //on passe au coup suivant que si le coup précédent
  • //a été effectué (z=1)
  • if (coup%2==1) {cout<<"A toi "<<j1.nom<<"!"<<endl;j=1;}
  • else {cout<<"A toi "<<j2.nom<<"!"<<endl;j=2;}
  • totaliz(j1); //on met à jour les listes totales
  • totaliz(j2); //des deux joueurs
  • choix=choix_menu();
  • switch (choix)
  • {
  • case 1:
  • if (j==1) z=cavalier(j1,j2);
  • else z=cavalier(j2,j1);
  • break;
  • case 2:
  • if (j==1) z=dame(j1,j2);
  • else z=dame(j2,j1);
  • break;
  • case 3:
  • if (j==1) z=roi(j1,j2);
  • else z=roi(j2,j1);
  • break;
  • case 4:
  • if (j==1) z=fou(j1,j2);
  • else z=fou(j2,j1);
  • break;
  • case 5:
  • if (j==1) z=tour(j1,j2);
  • else z=tour(j2,j1);
  • break;
  • case 6:
  • if (j==1) z=pion(j1,j2);
  • else z=pion(j2,j1);
  • break;
  • }
  • }while (choix!=7);
  • }
  • void main()
  • {
  • joueur j1,j2;
  • cout<<"Bienvenue dans mon jeu d'echecs pour deux\n\n";
  • presente(j1,j2);
  • cout<<endl;
  • menu(j1,j2);
  • }
#include<iostream.h>
#include<stdio.h>

struct liste
{
	int t[40];
	int nb; //nombre de cases occupées dans chaque liste
};

struct joueur
{
	char nom[10];
	liste l,lp,lc,ld,lr,lf,lt,ltot;
	//lp est la liste des pions, lc la liste des cavaliers, ...
	//ltot regroupe toutes les listes
	//l sert de liste des coups possibles dans les fonctions
};

void presente(joueur &j1,joueur &j2)
{
	cout<<"Joueur 1, tape ton nom: ";cin>>j1.nom;
	cout<<"Joueur 2, tape ton nom: ";cin>>j2.nom;
}

int saisir()
{
	char t[5];
	int x,y;
	bool valid;
	do{
		valid=true;
		cout<<" case: ";
		cin>>t;
		if (!(t[0]>='A' && t[0]<='H')) valid=false;
		if (!(t[1]>='1' && t[1]<='8')) valid=false;
		//non valide si la case n'est pas comprise entre A1 et H8
		if (t[2]!='\0') valid=false;
		//ou s'il y a plus de 2 caractères tapés
		if (valid==false) cout<<"Case non valide!"<<endl;
	}while (valid==false);
	y=(t[1]-'1')*8;
	x=t[0]-'A';
	x=x+y;
	//on convertit la saisie en un entier compris entre 0 et 63
	return x;
}

void init_liste(liste &l)
{
	l.nb=0;
}

void ajoute(int i,liste &l)
//ajoute une case donnée à une liste donnée
{
	if (i>=0 && i<=63)
	{
		l.t[l.nb]=i;
		l.nb++;
	}
}

void supprime(int n,liste &l)
//supprime une case donnée d'une liste donnée
{
	int i,numero=l.nb;
	for (i=0;i<l.nb;i++)
	{
		if (n==l.t[i]) numero=i;
	}
	for (i=numero;i<l.nb;i++) l.t[i]=l.t[i+1];
	if (numero!=l.nb) l.nb--;
}

void aff_case(int n)
{
	if (n>=0 && n<=63)
	{
		int y;
		char x;
		y=n/8+1;
		x=n-8*(y-1)+65;
		cout<<x<<y;
	}
}

void affiche(liste l)
{
	int i;
	for (i=0;i<l.nb;i++)
	{
		aff_case(l.t[i]);
		cout<<" ";
	}
}

int test(int n,liste l)
//teste si une case donnée est dans une liste donnée
//renvoie l'indice de la case dans la liste si elle est trouvée
//renvoie -1 sinon
{
	int i;
	for (i=0;i<l.nb;i++)
	{
		if (l.t[i]==n) return i;
	}
	return -1;
}

int cavalier(joueur &j1,joueur &j2)
{
	int i,j,n,z=1;
	init_liste(j1.l);
	cout<<"Cavalier"<<endl;
	do{
		n=saisir();
		i=test(n,j1.lc);
		//la case saisie est-elle dans la liste des cavaliers?
		if (i<0) cout<<"Le cavalier n'existe pas!"<<endl;
	}while (i<0);

	int y,dir1,dir2,dir3,dir4,dir5,dir6,dir7,dir8;
	char x;
	//x est la lettre de la case, y son numéro
	//dir1, dir2, ... sont les différentes directions possibles
	dir1=n+17;dir2=n+10;dir3=n-6;dir4=n-15;
	dir5=n-17;dir6=n-10;dir7=n+6;dir8=n+15;
	y=n/8+1;x=n-8*(y-1)+65;
	if (x=='A') //si le cavalier est dans la colonne A, ...
	{dir5=dir5+80;dir6=dir6+80;dir7=dir7+80;dir8=dir8+80;}
	if (x=='B') //si le cavalier est dans la colonne B, ...
	{dir6=dir6+80;dir7=dir7+80;}
	if (x=='G') //...
	{dir2=dir2+80;dir3=dir3+80;}
	if (x=='H')
	{dir1=dir1+80;dir2=dir2+80;dir3=dir3+80;dir4=dir4+80;}
	if (y==1) //s'il est dans la ligne 1, ...
	{dir3=dir3+80;dir4=dir4+80;dir5=dir5+80;dir6=dir6+80;}
	if (y==2) //...
	{dir4=dir4+80;dir5=dir5+80;}
	if (y==7)
	{dir1=dir1+80;dir8=dir8+80;}
	if (y==8)
	{dir1=dir1+80;dir2=dir2+80;dir7=dir7+80;dir8=dir8+80;}
	
	ajoute(dir1,j1.l);ajoute(dir2,j1.l);ajoute(dir3,j1.l);ajoute(dir4,j1.l);
	ajoute(dir5,j1.l);ajoute(dir6,j1.l);ajoute(dir7,j1.l);ajoute(dir8,j1.l);
	//on ajoute les coups possibles à la liste l

	cout<<" vers la";
	n=saisir();
	j=test(n,j1.l);
	//la case de destination est-elle un coup possible?
	if (j<0) z=0;
	else if (test(n,j1.ltot)>=0) z=0;
	//z=0 si le coup est impossible ou la case déjà prise par j1
	else j1.lc.t[i]=n;
	//sinon la case écrase la précédente dans la liste

	for (i=0;i<j2.ltot.nb;i++) if (n==j2.ltot.t[i] && z==1)
	{
		supprime(n,j2.lp);supprime(n,j2.lc);supprime(n,j2.ld);
		supprime(n,j2.lr);supprime(n,j2.lf);supprime(n,j2.lt);
	}
	//si la cavalier prend une pièce de j2, on la supprime
	return z;
	//renvoie 1 si le coup a été effectué
	//renvoie 0 sinon
}

int dame(joueur &j1,joueur &j2)
{
	int i,j,k,n,r,z=1;
	init_liste(j1.l);
	cout<<"Dame"<<endl;
	do{
		n=saisir();
		i=test(n,j1.ld);
		if (i<0) cout<<"La dame n'existe pas!"<<endl;
	}while (i<0);

	int y,d1=n,d2=n,d3=n,d4=n,d5=n,d6=n,d7=n,d8=n;
	char x;
	y=n/8+1;x=n-8*(y-1)+65;
	while(y!=8){r=0;d1=d1+8;for(k=0;k<j1.ltot.nb;k++)if(d1==j1.ltot.t[k])r=1;for(k=0;k<j2.ltot.nb;k++)if(d1==j2.ltot.t[k]){r=1;ajoute(d1,j1.l);}if(r==1)break;ajoute(d1,j1.l);y=d1/8+1;}
	y=n/8+1;x=n-8*(y-1)+65;
	while(y!=8 && x!='H'){r=0;d2=d2+9;for(k=0;k<j1.ltot.nb;k++)if(d2==j1.ltot.t[k])r=1;for(k=0;k<j2.ltot.nb;k++)if(d2==j2.ltot.t[k]){r=1;ajoute(d2,j1.l);}if(r==1)break;ajoute(d2,j1.l);y=d2/8+1;x=d2-8*(y-1)+65;}
	y=n/8+1;x=n-8*(y-1)+65;
	while(x!='H'){r=0;d3++;for(k=0;k<j1.ltot.nb;k++)if(d3==j1.ltot.t[k])r=1;for(k=0;k<j2.ltot.nb;k++)if(d3==j2.ltot.t[k]){r=1;ajoute(d3,j1.l);}if(r==1)break;ajoute(d3,j1.l);y=d3/8+1;x=d3-8*(y-1)+65;}
	y=n/8+1;x=n-8*(y-1)+65;
	while(x!='H' && y!=1){r=0;d4=d4-7;for(k=0;k<j1.ltot.nb;k++)if(d4==j1.ltot.t[k])r=1;for(k=0;k<j2.ltot.nb;k++)if(d4==j2.ltot.t[k]){r=1;ajoute(d4,j1.l);}if(r==1)break;ajoute(d4,j1.l);y=d4/8+1;x=d4-8*(y-1)+65;}
	y=n/8+1;
	while(y!=1){r=0;d5=d5-8;for(k=0;k<j1.ltot.nb;k++)if(d5==j1.ltot.t[k])r=1;for(k=0;k<j2.ltot.nb;k++)if(d5==j2.ltot.t[k]){r=1;ajoute(d5,j1.l);}if(r==1)break;ajoute(d5,j1.l);y=d5/8+1;}
	y=n/8+1;x=n-8*(y-1)+65;
	while(x!='A' && y!=1){r=0;d6=d6-9;for(k=0;k<j1.ltot.nb;k++)if(d6==j1.ltot.t[k])r=1;for(k=0;k<j2.ltot.nb;k++)if(d6=j2.ltot.t[k]){r=1;ajoute(d6,j1.l);}if(r==1)break;ajoute(d6,j1.l);y=d6/8+1;x=d6-8*(y-1)+65;}
	y=n/8+1;x=n-8*(y-1)+65;
	while(x!='A'){r=0;d7--;for(k=0;k<j1.ltot.nb;k++)if(d7==j1.ltot.t[k])r=1;for(k=0;k<j2.ltot.nb;k++)if(d7==j2.ltot.t[k]){r=1;ajoute(d7,j1.l);}if(r==1)break;ajoute(d7,j1.l);y=d7/8+1;x=d7-8*(y-1)+65;}
	y=n/8+1;x=n-8*(y-1)+65;
	while(x!='A' && y!=8){r=0;d8=d8+7;for(k=0;k<j1.ltot.nb;k++)if(d8==j1.ltot.t[k])r=1;for(k=0;k<j2.ltot.nb;k++)if(d8==j2.ltot.t[k]){r=1;ajoute(d8,j1.l);}if(r==1)break;ajoute(d8,j1.l);y=d8/8+1;x=d8-8*(y-1)+65;}
	//pour chaque direction, on ajoute à la liste toutes les cases
	//jusqu'à ce qu'on rencontre une case occupée ou le bord du jeu

	cout<<" vers la";
	n=saisir();
	j=test(n,j1.l);
	if (j<0) z=0;
	else j1.ld.t[i]=n;
	
	for (i=0;i<j2.ltot.nb;i++) if (n==j2.ltot.t[i] && z==1)
	{
		supprime(n,j2.lp);supprime(n,j2.lc);supprime(n,j2.ld);
		supprime(n,j2.lr);supprime(n,j2.lf);supprime(n,j2.lt);
	}
	return z;
}

int roi(joueur &j1,joueur &j2)
{
	int i,j,n,z=1;
	init_liste(j1.l);
	cout<<"Roi"<<endl;
	do{
		n=saisir();
		i=test(n,j1.lr);
		if (i<0) cout<<"Le roi n'existe pas!"<<endl;
	}while (i<0);

	int y,d1,d2,d3,d4,d5,d6,d7,d8;
	char x;
	d1=n+8;d2=n+9;d3=n+1;d4=n-7;
	d5=n-8;d6=n-9;d7=n-1;d8=n+7;
	y=n/8+1;x=n-8*(y-1)+65;
	if (x=='A')
	{d6=d6+80;d7=d7+80;d8=d8+80;}
	if (x=='H')
	{d2=d2+80;d3=d3+80;d4=d4+80;}
	if (y==1)
	{d4=d4+80;d5=d5+80;d6=d6+80;}
	if (y==8)
	{d1=d1+80;d2=d2+80;d8=d8+80;}

	ajoute(d1,j1.l);ajoute(d2,j1.l);
	ajoute(d3,j1.l);ajoute(d4,j1.l);
	ajoute(d5,j1.l);ajoute(d6,j1.l);
	ajoute(d7,j1.l);ajoute(d8,j1.l);

	cout<<" vers la";
	n=saisir();
	j=test(n,j1.l);
	if (j<0) z=0;
	else if (test(n,j1.ltot)>=0) z=0;
	else j1.lr.t[i]=n;

	for (i=0;i<j2.ltot.nb;i++) if (n==j2.ltot.t[i] && z==1)
	{
		supprime(n,j2.lp);supprime(n,j2.lc);supprime(n,j2.ld);
		supprime(n,j2.lr);supprime(n,j2.lf);supprime(n,j2.lt);
	}
	return z;
}

int fou(joueur &j1,joueur &j2)
{
	int i,j,n,r,k,z=1;
	init_liste(j1.l);
	cout<<"Fou"<<endl;
	do{
		n=saisir();
		i=test(n,j1.lf);
		if (i<0) cout<<"Le fou n'existe pas!"<<endl;
	}while (i<0);

	int y,d1=n,d2=n,d3=n,d4=n;
	char x;
	y=n/8+1;x=n-8*(y-1)+65;
	while(y!=8 && x!='H'){r=0;d1=d1+9;for(k=0;k<j1.ltot.nb;k++)if(d1==j1.ltot.t[k])r=1;for(k=0;k<j2.ltot.nb;k++)if(d1==j2.ltot.t[k]){r=1;ajoute(d1,j1.l);}if(r==1)break;ajoute(d1,j1.l);y=d1/8+1;x=d1-8*(y-1)+65;}
	y=n/8+1;x=n-8*(y-1)+65;
	while(x!='H' && y!=1){r=0;d2=d2-7;for(k=0;k<j1.ltot.nb;k++)if(d2==j1.ltot.t[k])r=1;for(k=0;k<j2.ltot.nb;k++)if(d2==j2.ltot.t[k]){r=1;ajoute(d2,j1.l);}if(r==1)break;ajoute(d2,j1.l);y=d2/8+1;x=d2-8*(y-1)+65;}
	y=n/8+1;x=n-8*(y-1)+65;
	while(x!='A' && y!=1){r=0;d3=d3-9;for(k=0;k<j1.ltot.nb;k++)if(d3==j1.ltot.t[k])r=1;for(k=0;k<j2.ltot.nb;k++)if(d3==j2.ltot.t[k]){r=1;ajoute(d3,j1.l);}if(r==1)break;ajoute(d3,j1.l);y=d3/8+1;x=d3-8*(y-1)+65;}
	y=n/8+1;x=n-8*(y-1)+65;
	while(x!='A' && y!=8){r=0;d4=d4+7;for(k=0;k<j1.ltot.nb;k++)if(d4==j1.ltot.t[k])r=1;for(k=0;k<j2.ltot.nb;k++)if(d4==j2.ltot.t[k]){r=1;ajoute(d4,j1.l);}if(r==1)break;ajoute(d4,j1.l);y=d4/8+1;x=d4-8*(y-1)+65;}

	cout<<" vers la";
	n=saisir();
	j=test(n,j1.l);
	if (j<0) z=0;
	else j1.lf.t[i]=n;

	for (i=0;i<j2.ltot.nb;i++) if (n==j2.ltot.t[i] && z==1)
	{
		supprime(n,j2.lp);supprime(n,j2.lc);supprime(n,j2.ld);
		supprime(n,j2.lr);supprime(n,j2.lf);supprime(n,j2.lt);
	}
	return z;
}

int tour(joueur &j1,joueur &j2)
{
	int i,j,n,r,k,z=1;
	init_liste(j1.l);
	cout<<"Tour"<<endl;
	do{
		n=saisir();
		i=test(n,j1.lt);
		if (i<0) cout<<"La tour n'existe pas!"<<endl;
	}while (i<0);

	int y,d1=n,d2=n,d3=n,d4=n;
	char x;
	y=n/8+1;x=n-8*(y-1)+65;
	while(y!=8){r=0;d1=d1+8;for(k=0;k<j1.ltot.nb;k++)if(d1==j1.ltot.t[k])r=1;for(k=0;k<j2.ltot.nb;k++)if(d1==j2.ltot.t[k]){r=1;ajoute(d1,j1.l);}if(r==1)break;ajoute(d1,j1.l);y=d1/8+1;}
	y=n/8+1;x=n-8*(y-1)+65;
	while(x!='H'){r=0;d2++;for(k=0;k<j1.ltot.nb;k++)if(d2==j1.ltot.t[k])r=1;for(k=0;k<j2.ltot.nb;k++)if(d2==j2.ltot.t[k]){r=1;ajoute(d2,j1.l);}if(r==1)break;ajoute(d2,j1.l);y=d2/8+1;x=d2-8*(y-1)+65;}
	y=n/8+1;
	while(y!=1){r=0;d3=d3-8;for(k=0;k<j1.ltot.nb;k++)if(d3==j1.ltot.t[k])r=1;for(k=0;k<j2.ltot.nb;k++)if(d3==j2.ltot.t[k]){r=1;ajoute(d3,j1.l);}if(r==1)break;ajoute(d3,j1.l);y=d3/8+1;}
	y=n/8+1;x=n-8*(y-1)+65;
	while(x!='A'){r=0;d4--;for(k=0;k<j1.ltot.nb;k++)if(d4==j1.ltot.t[k])r=1;for(k=0;k<j2.ltot.nb;k++)if(d4==j2.ltot.t[k]){r=1;ajoute(d4,j1.l);}if(r==1)break;ajoute(d4,j1.l);y=d4/8+1;x=d4-8*(y-1)+65;}

	cout<<" vers la";
	n=saisir();
	j=test(n,j1.l);
	if (j<0) z=0;
	else j1.lt.t[i]=n;

	for (i=0;i<j2.ltot.nb;i++) if (n==j2.ltot.t[i] && z==1)
	{
		supprime(n,j2.lp);supprime(n,j2.lc);supprime(n,j2.ld);
		supprime(n,j2.lr);supprime(n,j2.lf);supprime(n,j2.lt);
	}
	return z;
}

int pion(joueur &j1,joueur &j2)
{
	int i,j,n,z=1;
	init_liste(j1.l);
	cout<<"Pion"<<endl;
	do{
		n=saisir();
		i=test(n,j1.lp);
		if (i<0) cout<<"Le pion n'existe pas!"<<endl;
	}while (i<0);

	int y,d1;
	y=n/8+1;
	d1=n+8;ajoute(d1,j1.l);
	if (y==2) {d1=d1+8;ajoute(d1,j1.l);}
	d1=n-8;ajoute(d1,j1.l);
	if (y==7) {d1=d1-8;ajoute(d1,j1.l);}
	d1=n+9;ajoute(d1,j1.l);
	d1=n-9;ajoute(d1,j1.l);
	d1=n+7;ajoute(d1,j1.l);
	d1=n-7;ajoute(d1,j1.l);

	cout<<" vers la";
	n=saisir();
	j=test(n,j1.l);
	if (j<0) z=0;
	else if (test(n,j1.ltot)>=0) z=0;
	else j1.lp.t[i]=n;

	for (i=0;i<j2.ltot.nb;i++) if (n==j2.ltot.t[i] && z==1)
	{
		supprime(n,j2.lp);supprime(n,j2.lc);supprime(n,j2.ld);
		supprime(n,j2.lr);supprime(n,j2.lf);supprime(n,j2.lt);
	}
	return z;
}

void initializ(joueur &j1,joueur &j2)
//initialise les listes de pièces
{
	int i;
	j1.lp.nb=8;j1.lc.nb=2;j1.ld.nb=1;j1.lr.nb=1;j1.lf.nb=2;j1.lt.nb=2;
	j2.lp.nb=8;j2.lc.nb=2;j2.ld.nb=1;j2.lr.nb=1;j2.lf.nb=2;j2.lt.nb=2;
	j1.ld.t[0]=4;j2.ld.t[0]=60;
	j1.lr.t[0]=3;j2.lr.t[0]=59;
	j1.lc.t[0]=1;j1.lc.t[1]=6;j2.lc.t[0]=57;j2.lc.t[1]=62;
	j1.lf.t[0]=2;j1.lf.t[1]=5;j2.lf.t[0]=58;j2.lf.t[1]=61;
	j1.lt.t[0]=0;j1.lt.t[1]=7;j2.lt.t[0]=56;j2.lt.t[1]=63;
	for (i=0;i<8;i++) j1.lp.t[i]=i+8;
	for (i=0;i<8;i++) j2.lp.t[i]=i+48;
}

void totaliz(joueur &j1)
//regroupe toutes les listes de pièces dans la liste ltot du joueur
{
	int i,j=0;
	for (i=0;i<j1.lp.nb;i++) {j1.ltot.t[j]=j1.lp.t[i];j++;}
	for (i=0;i<j1.lc.nb;i++) {j1.ltot.t[j]=j1.lc.t[i];j++;}
	for (i=0;i<j1.ld.nb;i++) {j1.ltot.t[j]=j1.ld.t[i];j++;}
	for (i=0;i<j1.lr.nb;i++) {j1.ltot.t[j]=j1.lr.t[i];j++;}
	for (i=0;i<j1.lf.nb;i++) {j1.ltot.t[j]=j1.lf.t[i];j++;}
	for (i=0;i<j1.lt.nb;i++) {j1.ltot.t[j]=j1.lt.t[i];j++;}
	j1.ltot.nb=j;
}

int choix_menu()
{
	int n;
	cout<<endl;
	cout<<"Choisis ton coup!\n";
	cout<<"1. coup de cavalier\n";
	cout<<"2. coup de dame\n";
	cout<<"3. coup de roi\n";
	cout<<"4. coup de fou\n";
	cout<<"5. coup de tour\n";
	cout<<"6. coup de pion\n";
	cout<<"7. quitter\n";
	cout<<"Ton choix: ";cin>>n;
	cout<<endl;
	return n;
}

void echiquier(joueur j1,joueur j2)
{
	int i,k,x,r;
	char j;
	cout<<" ________________________________________________"<<endl;
	for (i=8;i>0;i--) //boucle parcourant les lignes
	{
		cout<<"\xB3     \xB3     \xB3     \xB3     \xB3     \xB3     \xB3     \xB3     \xB3"<<endl;
		
		for (j='A';j<='H';j++) //boucle parcourant les colonnes
		{
			r=0;
			x=(j-'A')+(i-1)*8; //x prend la valeur de la case
			cout<<"\xB3  ";
			for(k=0;k<16;k++)
			{
				if (j1.lp.t[k]==x) {cout<<".";r=1;break;}
				if (j1.lc.t[k]==x) {cout<<"\x06";r=1;break;}
				if (j1.ld.t[k]==x) {cout<<"\x03";r=1;break;}
				if (j1.lr.t[k]==x) {cout<<"\x02";r=1;break;}
				if (j1.lf.t[k]==x) {cout<<"\x05";r=1;break;}
				if (j1.lt.t[k]==x) {cout<<"\x04";r=1;break;}

				if (j2.lp.t[k]==x) {cout<<"p";r=1;break;}
				if (j2.lc.t[k]==x) {cout<<"c";r=1;break;}
				if (j2.ld.t[k]==x) {cout<<"d";r=1;break;}
				if (j2.lr.t[k]==x) {cout<<"\x01";r=1;break;}
				if (j2.lf.t[k]==x) {cout<<"f";r=1;break;}
				if (j2.lt.t[k]==x) {cout<<"t";r=1;break;}
			}
			if (r==0) cout<<" "; //s'il n'y a rien dans cette case...
			cout<<"  ";
		}
		cout<<"\xB3"<<i<<endl;
		cout<<"\xB3_____\xB3_____\xB3_____\xB3_____\xB3_____\xB3_____\xB3_____\xB3_____\xB3"<<endl;
	}
	cout<<"   A     B     C     D     E     F     G     H"<<endl;
	getc(stdin); //attend la frappe de la touche ENTREE
}

void menu(joueur j1,joueur j2)
{
	int choix,coup=0,j,z=1;
	//coup est le numéro du coup à jouer
	//j est le numéro du joueur dont c'est le tour de jouer
	initializ(j1,j2);
	do
	{
		echiquier(j1,j2);

		if (z==1) coup++;
		//on passe au coup suivant que si le coup précédent
		//a été effectué (z=1)
		if (coup%2==1) {cout<<"A toi "<<j1.nom<<"!"<<endl;j=1;}
		else {cout<<"A toi "<<j2.nom<<"!"<<endl;j=2;}

		totaliz(j1); //on met à jour les listes totales
		totaliz(j2); //des deux joueurs

		choix=choix_menu();
		switch (choix)
		{
		case 1: 
			if (j==1) z=cavalier(j1,j2);
			else z=cavalier(j2,j1);
			break;
		case 2: 
			if (j==1) z=dame(j1,j2);
			else z=dame(j2,j1);
			break;
		case 3: 
			if (j==1) z=roi(j1,j2);
			else z=roi(j2,j1);
			break;
		case 4:
			if (j==1) z=fou(j1,j2);
			else z=fou(j2,j1);
			break;
		case 5:
			if (j==1) z=tour(j1,j2);
			else z=tour(j2,j1);
			break;
		case 6:
			if (j==1) z=pion(j1,j2);
			else z=pion(j2,j1);
			break;
		}
	}while (choix!=7);
}

void main()
{
	joueur j1,j2;
	cout<<"Bienvenue dans mon jeu d'echecs pour deux\n\n";
	presente(j1,j2);
	cout<<endl;
	menu(j1,j2);
}        

 Conclusion

Et pour la promotion de mon futur site (ouverture prévue fin avril 2002)...
http://lambda.man.free.fr
Merci beaucoup!!!!    

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip COMMANDES MS-DOS (VISUAL C++)
Source avec Zip YAHTZEE (JEU DE DÉS TRÈS COMPLET!) (VISUAL C++)
CORRECTION DE LA FONCTION STRCMP(...) (VISUAL C++)
QUEL JOUR SOMMES-NOUS?? (VISUAL C++)
Source avec Zip PUISSANCE 4 (VISUAL C++)

 Sources de la même categorie

Source avec Zip Source avec une capture JEU DES CARTES par eapaceinfo
PROGRAMME DE JEU DE MPT par KerizGarmm
Source avec Zip Source avec une capture JEUX SERPENT par antho974
Source avec Zip Source avec une capture PENDU EN SDL par Damsou91
Source avec Zip STATE MACHINE MODIFICATION MATH BUCKHAM par billybones79

Commentaires et avis

Commentaire de GoldenEye le 12/03/2002 18:02:11

c'est pour quand l'IA ?
Je rêve, tu me doubles pour le feu ET pour les échecs qui sera fini dans 6 mois (avec IA bien sûr). Tu es un télépathe puissant !

Commentaire de Wepawetmose le 13/03/2002 13:38:58

Ouais merci, mais c'est pas de l'IA, c'est un jeu pour deux! Chuis pas informaticien non plus!! Mais les gens font quand même plus de commentaires sur VBFrance...
ciaociao!!

Commentaire de GoldenEye le 15/03/2002 15:04:58

Le site de VB france est beaucoup plus fréquenté que celui ci. En fait ne se retrouvent là que des fêlés de la prog qui ne jurent presque que par le C/C++. Ils sont très exigeants sur les progs... Quant à l'IA c'est plutôt infaisable en VB (trop lent) mais en C c'est tout à fait abordable.
Bon courage
@+

Commentaire de vanpet le 08/07/2002 19:43:01

vive le VB, meme pour l'IA !
;-D

Commentaire de GoldenEye le 06/10/2002 11:38:29

Voilà mon jeu d'échecs avec IA est fini
http://perso.wanadoo.fr/goldeneyerv

Commentaire de EagleEye le 08/02/2005 11:44:46

Ouais si le lien marchait ca serait bien ^^ sinan moi aussi je suis sur un projet 3d en opengl avec ai mode deux joueurs etc...
vla les gens bonne continuation ^^

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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,764 sec (3)

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