Accueil > > > ECHECS (VISUAL C++)
ECHECS (VISUAL C++)
Information sur la source
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!!!!
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
MATRICE TEMPLATEMATRICE TEMPLATE par hjr2610
Cliquez pour lire la suite par hjr2610 RE : SAC A DOS RE : SAC A DOS par hadjkaddour
Cliquez pour lire la suite par hadjkaddour
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|