Echiquier ( visual c++ )

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 / Exemple :


#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);
}

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.