|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
ECHIQUIER ( VISUAL C++ )
Information sur la source
Description
Vous pouvez continuer le programme pour en faire un vrai jeu d'échec Prenez le fichier zip et mettez tout dans le même répertoire
Source
- #include<iostream.h>
- #include<string.h>
- #include<conio.h>
- #include"econio.cpp"
-
- struct coup
- {
- int casedep,casearr;
- };
-
- struct listecoups
- {
- coup coupn[50];
- int nbcoups;
- };
-
- void codecase (int num_case,char empl[])
- {
- int x,y;
- x=(num_case%8);
- y=(num_case/8+1);
- empl[0]=char(x)+'A';
- empl[1]=char(y)+'0';
- empl[2]='\0';
- }
-
-
-
- int numcase(char x,int y)
- {
- int num_case,absc;
- absc=(int (x - 'A'));
- num_case=absc+(y-1)*8;
- return num_case;
- }
-
- int saisircase()
- {
- char empl[3];
- int y;
- do
- {
- cout<<"Veuillez saisir votre case de depart sous la forme A1. ";cin>>empl;
- }while ((empl[0]<'A') || (empl[0]>'H') || (empl[1]<'1') || (empl[1]>'8'));
- y=int(empl[1]-'0');
- return numcase(empl[0],y);
- }
-
- //Afficher la liste des coups possibles
- void affiche(listecoups listecoup)
- {
- int i;
- char empl1[3],empl2[3];
- for (i=0;i<listecoup.nbcoups;i++)
- {
- codecase(listecoup.coupn[i].casearr,empl2);
- codecase(listecoup.coupn[i].casedep,empl1);
- cout<<"Coup no"<<i+1<<" est : "<<empl1<<" -> "<<empl2<<endl;
- }
- }
-
- void coupcavalier (listecoups &liste1,int cdepart)
- {
- int num=0;
- if ((cdepart%8!=7)&&(cdepart<48))
- {
- liste1.coupn[num].casedep=cdepart;
- liste1.coupn[num].casearr=cdepart+17;
- num++;
- }
- if ((cdepart%8!=0)&&(cdepart<48))
- {
- liste1.coupn[num].casedep=cdepart;
- liste1.coupn[num].casearr=cdepart+15;
- num++;
- }
- if ((cdepart%8!=7)&&(cdepart>15))
- {
- liste1.coupn[num].casedep=cdepart;
- liste1.coupn[num].casearr=cdepart-15;
- num++;
- }
- if ((cdepart%8!=0)&&(cdepart>15))
- {
- liste1.coupn[num].casedep=cdepart;
- liste1.coupn[num].casearr=cdepart-17;
- num++;
- }
- if ((cdepart%8>1)&&(cdepart<56))
- {
- liste1.coupn[num].casedep=cdepart;
- liste1.coupn[num].casearr=cdepart+6;
- num++;
- }
- if ((cdepart%8>1)&&(cdepart>7))
- {
- liste1.coupn[num].casedep=cdepart;
- liste1.coupn[num].casearr=cdepart-10;
- num++;
- }
- if ((cdepart%8<6)&&(cdepart>7))
- {
- liste1.coupn[num].casedep=cdepart;
- liste1.coupn[num].casearr=cdepart-6;
- num++;
- }
- if ((cdepart%8<6)&&(cdepart<56))
- {
- liste1.coupn[num].casedep=cdepart;
- liste1.coupn[num].casearr=cdepart+10;
- num++;
- }
- liste1.nbcoups=num;
- }
-
- void couptour(listecoups &liste1,int cdep)
- {
- int num=0,i,ligne,colonne;
- ligne=cdep/8;
- for(i=0;i<8;i++)
- {
- if (ligne*8+i!=cdep)
- {
- liste1.coupn[num].casedep=cdep;
- liste1.coupn[num].casearr=ligne*8+i;
- num++;
- }
- }
- colonne=cdep%8;
- for(i=0;i<8;i++)
- {
- if (i*8+colonne!=cdep)
- {
- liste1.coupn[num].casedep=cdep;
- liste1.coupn[num].casearr=i*8+colonne;
- num++;
- }
- }
- liste1.nbcoups=num;
- }
-
- void coupdame(listecoups &liste1,int cdep)
- {
- int num=0,i,ligne,colonne,x;
- ligne=cdep/8;
- for(i=0;i<8;i++)
- {
- if (ligne*8+i!=cdep)
- {
- liste1.coupn[num].casedep=cdep;
- liste1.coupn[num].casearr=ligne*8+i;
- num++;
- }
- }
- colonne=cdep%8;
- for(i=0;i<8;i++)
- {
- if (i*8+colonne!=cdep)
- {
- liste1.coupn[num].casedep=cdep;
- liste1.coupn[num].casearr=i*8+colonne;
- num++;
- }
- }
- x=cdep;
- while ((x%8!=0)&&(x/8!=0)) x=x-9;
- x=x-9;
- do
- {
- x+=9;
- if (x!=cdep)
- {
- liste1.coupn[num].casedep=cdep;
- liste1.coupn[num].casearr=x;
- num++;
- }
- }while ((x%8!=7)&&(x/8!=7));
- x=cdep;
- while ((x%8!=7)&&(x/8!=0)) x=x-7;
- x=x-7;
- do
- {
- x+=7;
- if (x!=cdep)
- {
- liste1.coupn[num].casedep=cdep;
- liste1.coupn[num].casearr=x;
- num++;
- }
-
- }while ((x%8!=0)&&(x/8!=7));
- liste1.nbcoups=num;
- }
-
- void coupfou(listecoups &liste1,int cdep)
- {
- int num=0,x;
- x=cdep;
- while ((x%8!=0)&&(x/8!=0)) x=x-9;
- x=x-9;
- do
- {
- x+=9;
- if (x!=cdep)
- {
- liste1.coupn[num].casedep=cdep;
- liste1.coupn[num].casearr=x;
- num++;
- }
- }while ((x%8!=7)&&(x/8!=7));
- x=cdep;
- while ((x%8!=7)&&(x/8!=0)) x=x-7;
- x=x-7;
- do
- {
- x+=7;
- if (x!=cdep)
- {
- liste1.coupn[num].casedep=cdep;
- liste1.coupn[num].casearr=x;
- num++;
- }
-
- }while ((x%8!=0)&&(x/8!=7));
- liste1.nbcoups=num;
- }
-
- void couproi(listecoups &liste1,int cdep)
- {
- int num=0;
- if (cdep>7)
- {
- liste1.coupn[num].casedep=cdep;
- liste1.coupn[num].casearr=cdep-8;
- num++;
- }
- if ((cdep>7)&&(cdep%8!=7))
- {
- liste1.coupn[num].casedep=cdep;
- liste1.coupn[num].casearr=cdep-7;
- num++;
- }
- if (cdep%8!=7)
- {
- liste1.coupn[num].casedep=cdep;
- liste1.coupn[num].casearr=cdep+1;
- num++;
- }
- if ((cdep%8!=7)&&(cdep<56))
- {
- liste1.coupn[num].casedep=cdep;
- liste1.coupn[num].casearr=cdep+9;
- num++;
- }
- if (cdep<56)
- {
- liste1.coupn[num].casedep=cdep;
- liste1.coupn[num].casearr=cdep+8;
- num++;
- }
- if ((cdep<56)&&(cdep%8!=0))
- {
- liste1.coupn[num].casedep=cdep;
- liste1.coupn[num].casearr=cdep+7;
- num++;
- }
- if (cdep%8!=0)
- {
- liste1.coupn[num].casedep=cdep;
- liste1.coupn[num].casearr=cdep-1;
- num++;
- }
- if ((cdep%8!=0)&&(cdep>7))
- {
- liste1.coupn[num].casedep=cdep;
- liste1.coupn[num].casearr=cdep-9;
- num++;
- }
- liste1.nbcoups=num;
- }
-
- void couppion (listecoups &liste1, int cdep)
- {
- int num=0;
- if (cdep/8==1)
- {
- liste1.coupn[num].casedep=cdep;
- liste1.coupn[num].casearr=cdep+16;
- num++;
- }
- if ((cdep>7)&&(cdep<56))
- {
- liste1.coupn[num].casedep=cdep;
- liste1.coupn[num].casearr=cdep+8;
- num++;
- }
- liste1.nbcoups=num;
- }
-
- void echiquier (listecoups liste1,int cdepart)
- {
- int i,j,k,a,casec,fond,texte;
- bool trouve;
- cout<<"La case de d\202part est represent\202e par un X, les cases d'arriv\202e possibles"<<endl;
- cout<<"par des o et les autres cases par un ."<<endl;
- a=getch();
- clrscr();
- textcolor(0);textbackground(15);
- cout<<" A B C D E F G H"<<endl<<endl;
- for (i=7;i>=0;i--)
- {
- if (i%2==1) {texte=0;fond=15;}
- else {texte=15;fond=0;}
- gotoxy(0,9-i);
- textcolor(0);textbackground(15);
- cout<<i+1<<" "<<endl;
- for (j=0;j<8;j++)
- {
- if(texte==0) {texte=15;fond=0;}
- else {texte=0;fond=15;}
- trouve=false;
- casec=8*i+j;
- gotoxy(2*j+3,9-i);
- if ((cdepart==casec)&&(liste1.nbcoups>0)) {textcolor(texte);textbackground(10);cout<<"X "<<endl;trouve=true;}
- for (k=0;k<liste1.nbcoups;k++)
- {
- if (liste1.coupn[k].casearr==casec) {textcolor(texte);textbackground(12);cout<<"o "<<endl;trouve=true;}
- }
- if (trouve==false) {textcolor(texte);textbackground(fond);cout<<". "<<endl;}
- }
- textcolor(0);textbackground(15);
- gotoxy(20,9-i);
- cout<<i+1<<endl;
- }
- cout<<endl;
- textcolor(0);
- textbackground(15);
- cout<<" A B C D E F G H"<<endl;
- cout<<endl;
- gotoxy(1,15);
- }
-
-
- void main()
- {
- int choix,cdepart;
- listecoups liste1;
- char decision;
- do
- {
- textcolor(0);textbackground(15);
- liste1.nbcoups=0;
- cout<<"Quels coups voulez-vous obtenir ?"<<endl;
- cout<<"1. Coup de cavalier"<<endl;
- cout<<"2. Coup de dame"<<endl;
- cout<<"3. Coup de tour"<<endl;
- cout<<"4. Coup de fou"<<endl;
- cout<<"5. Coup de roi"<<endl;
- cout<<"6. Coup de pion"<<endl;
- cout<<"7. Quitter"<<endl;
- cout<<"Votre choix : ";cin>>choix;
- switch(choix)
- {
- case 1: cdepart=saisircase();
- cout<<cdepart<<endl;
- coupcavalier (liste1,cdepart);
- cout<<"Voulez-vous l'afficher sous forme d'un echiquier (O/N) ? ";cin>>decision;
- if ((decision=='o')||(decision=='O')) echiquier (liste1, cdepart);
- else affiche (liste1);
- break;
- case 2: cdepart=saisircase();
- coupdame (liste1,cdepart);
- cout<<"Voulez-vous l'afficher sous forme d'un echiquier (O/N) ? ";cin>>decision;
- if ((decision=='o')||(decision=='O')) echiquier (liste1, cdepart);
- else affiche(liste1);
- break;
- case 3: cdepart=saisircase();
- couptour (liste1,cdepart);
- cout<<"Voulez-vous l'afficher sous forme d'un echiquier (O/N) ? ";cin>>decision;
- if ((decision=='o')||(decision=='O')) echiquier (liste1, cdepart);
- else affiche(liste1);
- break;
- case 4: cdepart=saisircase();
- coupfou (liste1,cdepart);
- cout<<"Voulez-vous l'afficher sous forme d'un echiquier (O/N) ? ";cin>>decision;
- if ((decision=='o')||(decision=='O')) echiquier (liste1, cdepart);
- else affiche(liste1);
- break;
- case 5: cdepart=saisircase();
- couproi (liste1,cdepart);
- cout<<"Voulez-vous l'afficher sous forme d'un echiquier (O/N) ? ";cin>>decision;
- if ((decision=='o')||(decision=='O')) echiquier (liste1, cdepart);
- else affiche(liste1);
- break;
- case 6: cdepart=saisircase();
- couppion (liste1,cdepart);
- cout<<"Voulez-vous l'afficher sous forme d'un echiquier (O/N) ? ";cin>>decision;
- if ((decision=='o')||(decision=='O')) echiquier (liste1, cdepart);
- else affiche(liste1);
- break;
- }
- } while (choix!=7);
- }
-
#include<iostream.h>
#include<string.h>
#include<conio.h>
#include"econio.cpp"
struct coup
{
int casedep,casearr;
};
struct listecoups
{
coup coupn[50];
int nbcoups;
};
void codecase (int num_case,char empl[])
{
int x,y;
x=(num_case%8);
y=(num_case/8+1);
empl[0]=char(x)+'A';
empl[1]=char(y)+'0';
empl[2]='\0';
}
int numcase(char x,int y)
{
int num_case,absc;
absc=(int (x - 'A'));
num_case=absc+(y-1)*8;
return num_case;
}
int saisircase()
{
char empl[3];
int y;
do
{
cout<<"Veuillez saisir votre case de depart sous la forme A1. ";cin>>empl;
}while ((empl[0]<'A') || (empl[0]>'H') || (empl[1]<'1') || (empl[1]>'8'));
y=int(empl[1]-'0');
return numcase(empl[0],y);
}
//Afficher la liste des coups possibles
void affiche(listecoups listecoup)
{
int i;
char empl1[3],empl2[3];
for (i=0;i<listecoup.nbcoups;i++)
{
codecase(listecoup.coupn[i].casearr,empl2);
codecase(listecoup.coupn[i].casedep,empl1);
cout<<"Coup no"<<i+1<<" est : "<<empl1<<" -> "<<empl2<<endl;
}
}
void coupcavalier (listecoups &liste1,int cdepart)
{
int num=0;
if ((cdepart%8!=7)&&(cdepart<48))
{
liste1.coupn[num].casedep=cdepart;
liste1.coupn[num].casearr=cdepart+17;
num++;
}
if ((cdepart%8!=0)&&(cdepart<48))
{
liste1.coupn[num].casedep=cdepart;
liste1.coupn[num].casearr=cdepart+15;
num++;
}
if ((cdepart%8!=7)&&(cdepart>15))
{
liste1.coupn[num].casedep=cdepart;
liste1.coupn[num].casearr=cdepart-15;
num++;
}
if ((cdepart%8!=0)&&(cdepart>15))
{
liste1.coupn[num].casedep=cdepart;
liste1.coupn[num].casearr=cdepart-17;
num++;
}
if ((cdepart%8>1)&&(cdepart<56))
{
liste1.coupn[num].casedep=cdepart;
liste1.coupn[num].casearr=cdepart+6;
num++;
}
if ((cdepart%8>1)&&(cdepart>7))
{
liste1.coupn[num].casedep=cdepart;
liste1.coupn[num].casearr=cdepart-10;
num++;
}
if ((cdepart%8<6)&&(cdepart>7))
{
liste1.coupn[num].casedep=cdepart;
liste1.coupn[num].casearr=cdepart-6;
num++;
}
if ((cdepart%8<6)&&(cdepart<56))
{
liste1.coupn[num].casedep=cdepart;
liste1.coupn[num].casearr=cdepart+10;
num++;
}
liste1.nbcoups=num;
}
void couptour(listecoups &liste1,int cdep)
{
int num=0,i,ligne,colonne;
ligne=cdep/8;
for(i=0;i<8;i++)
{
if (ligne*8+i!=cdep)
{
liste1.coupn[num].casedep=cdep;
liste1.coupn[num].casearr=ligne*8+i;
num++;
}
}
colonne=cdep%8;
for(i=0;i<8;i++)
{
if (i*8+colonne!=cdep)
{
liste1.coupn[num].casedep=cdep;
liste1.coupn[num].casearr=i*8+colonne;
num++;
}
}
liste1.nbcoups=num;
}
void coupdame(listecoups &liste1,int cdep)
{
int num=0,i,ligne,colonne,x;
ligne=cdep/8;
for(i=0;i<8;i++)
{
if (ligne*8+i!=cdep)
{
liste1.coupn[num].casedep=cdep;
liste1.coupn[num].casearr=ligne*8+i;
num++;
}
}
colonne=cdep%8;
for(i=0;i<8;i++)
{
if (i*8+colonne!=cdep)
{
liste1.coupn[num].casedep=cdep;
liste1.coupn[num].casearr=i*8+colonne;
num++;
}
}
x=cdep;
while ((x%8!=0)&&(x/8!=0)) x=x-9;
x=x-9;
do
{
x+=9;
if (x!=cdep)
{
liste1.coupn[num].casedep=cdep;
liste1.coupn[num].casearr=x;
num++;
}
}while ((x%8!=7)&&(x/8!=7));
x=cdep;
while ((x%8!=7)&&(x/8!=0)) x=x-7;
x=x-7;
do
{
x+=7;
if (x!=cdep)
{
liste1.coupn[num].casedep=cdep;
liste1.coupn[num].casearr=x;
num++;
}
}while ((x%8!=0)&&(x/8!=7));
liste1.nbcoups=num;
}
void coupfou(listecoups &liste1,int cdep)
{
int num=0,x;
x=cdep;
while ((x%8!=0)&&(x/8!=0)) x=x-9;
x=x-9;
do
{
x+=9;
if (x!=cdep)
{
liste1.coupn[num].casedep=cdep;
liste1.coupn[num].casearr=x;
num++;
}
}while ((x%8!=7)&&(x/8!=7));
x=cdep;
while ((x%8!=7)&&(x/8!=0)) x=x-7;
x=x-7;
do
{
x+=7;
if (x!=cdep)
{
liste1.coupn[num].casedep=cdep;
liste1.coupn[num].casearr=x;
num++;
}
}while ((x%8!=0)&&(x/8!=7));
liste1.nbcoups=num;
}
void couproi(listecoups &liste1,int cdep)
{
int num=0;
if (cdep>7)
{
liste1.coupn[num].casedep=cdep;
liste1.coupn[num].casearr=cdep-8;
num++;
}
if ((cdep>7)&&(cdep%8!=7))
{
liste1.coupn[num].casedep=cdep;
liste1.coupn[num].casearr=cdep-7;
num++;
}
if (cdep%8!=7)
{
liste1.coupn[num].casedep=cdep;
liste1.coupn[num].casearr=cdep+1;
num++;
}
if ((cdep%8!=7)&&(cdep<56))
{
liste1.coupn[num].casedep=cdep;
liste1.coupn[num].casearr=cdep+9;
num++;
}
if (cdep<56)
{
liste1.coupn[num].casedep=cdep;
liste1.coupn[num].casearr=cdep+8;
num++;
}
if ((cdep<56)&&(cdep%8!=0))
{
liste1.coupn[num].casedep=cdep;
liste1.coupn[num].casearr=cdep+7;
num++;
}
if (cdep%8!=0)
{
liste1.coupn[num].casedep=cdep;
liste1.coupn[num].casearr=cdep-1;
num++;
}
if ((cdep%8!=0)&&(cdep>7))
{
liste1.coupn[num].casedep=cdep;
liste1.coupn[num].casearr=cdep-9;
num++;
}
liste1.nbcoups=num;
}
void couppion (listecoups &liste1, int cdep)
{
int num=0;
if (cdep/8==1)
{
liste1.coupn[num].casedep=cdep;
liste1.coupn[num].casearr=cdep+16;
num++;
}
if ((cdep>7)&&(cdep<56))
{
liste1.coupn[num].casedep=cdep;
liste1.coupn[num].casearr=cdep+8;
num++;
}
liste1.nbcoups=num;
}
void echiquier (listecoups liste1,int cdepart)
{
int i,j,k,a,casec,fond,texte;
bool trouve;
cout<<"La case de d\202part est represent\202e par un X, les cases d'arriv\202e possibles"<<endl;
cout<<"par des o et les autres cases par un ."<<endl;
a=getch();
clrscr();
textcolor(0);textbackground(15);
cout<<" A B C D E F G H"<<endl<<endl;
for (i=7;i>=0;i--)
{
if (i%2==1) {texte=0;fond=15;}
else {texte=15;fond=0;}
gotoxy(0,9-i);
textcolor(0);textbackground(15);
cout<<i+1<<" "<<endl;
for (j=0;j<8;j++)
{
if(texte==0) {texte=15;fond=0;}
else {texte=0;fond=15;}
trouve=false;
casec=8*i+j;
gotoxy(2*j+3,9-i);
if ((cdepart==casec)&&(liste1.nbcoups>0)) {textcolor(texte);textbackground(10);cout<<"X "<<endl;trouve=true;}
for (k=0;k<liste1.nbcoups;k++)
{
if (liste1.coupn[k].casearr==casec) {textcolor(texte);textbackground(12);cout<<"o "<<endl;trouve=true;}
}
if (trouve==false) {textcolor(texte);textbackground(fond);cout<<". "<<endl;}
}
textcolor(0);textbackground(15);
gotoxy(20,9-i);
cout<<i+1<<endl;
}
cout<<endl;
textcolor(0);
textbackground(15);
cout<<" A B C D E F G H"<<endl;
cout<<endl;
gotoxy(1,15);
}
void main()
{
int choix,cdepart;
listecoups liste1;
char decision;
do
{
textcolor(0);textbackground(15);
liste1.nbcoups=0;
cout<<"Quels coups voulez-vous obtenir ?"<<endl;
cout<<"1. Coup de cavalier"<<endl;
cout<<"2. Coup de dame"<<endl;
cout<<"3. Coup de tour"<<endl;
cout<<"4. Coup de fou"<<endl;
cout<<"5. Coup de roi"<<endl;
cout<<"6. Coup de pion"<<endl;
cout<<"7. Quitter"<<endl;
cout<<"Votre choix : ";cin>>choix;
switch(choix)
{
case 1: cdepart=saisircase();
cout<<cdepart<<endl;
coupcavalier (liste1,cdepart);
cout<<"Voulez-vous l'afficher sous forme d'un echiquier (O/N) ? ";cin>>decision;
if ((decision=='o')||(decision=='O')) echiquier (liste1, cdepart);
else affiche (liste1);
break;
case 2: cdepart=saisircase();
coupdame (liste1,cdepart);
cout<<"Voulez-vous l'afficher sous forme d'un echiquier (O/N) ? ";cin>>decision;
if ((decision=='o')||(decision=='O')) echiquier (liste1, cdepart);
else affiche(liste1);
break;
case 3: cdepart=saisircase();
couptour (liste1,cdepart);
cout<<"Voulez-vous l'afficher sous forme d'un echiquier (O/N) ? ";cin>>decision;
if ((decision=='o')||(decision=='O')) echiquier (liste1, cdepart);
else affiche(liste1);
break;
case 4: cdepart=saisircase();
coupfou (liste1,cdepart);
cout<<"Voulez-vous l'afficher sous forme d'un echiquier (O/N) ? ";cin>>decision;
if ((decision=='o')||(decision=='O')) echiquier (liste1, cdepart);
else affiche(liste1);
break;
case 5: cdepart=saisircase();
couproi (liste1,cdepart);
cout<<"Voulez-vous l'afficher sous forme d'un echiquier (O/N) ? ";cin>>decision;
if ((decision=='o')||(decision=='O')) echiquier (liste1, cdepart);
else affiche(liste1);
break;
case 6: cdepart=saisircase();
couppion (liste1,cdepart);
cout<<"Voulez-vous l'afficher sous forme d'un echiquier (O/N) ? ";cin>>decision;
if ((decision=='o')||(decision=='O')) echiquier (liste1, cdepart);
else affiche(liste1);
break;
}
} while (choix!=7);
}
Fichier Zip
Pour les "Membres Club", vous pouvez 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
Sources de la même categorie
Commentaires et avis
|
Comparez les prix Nouvelle version
|