Scacchi

/* Scrivere un programma che, dato un pezzo degli scacchi,
riempia una matrice (scacchiera) con dei numeri interi. Ogni casella contiene un va-
lore intero che rappresenta il numero di locazioni raggiungibili dal pezzo posizionato
in quella casella.*/
#include
#define N 8

void torre(int matrice[][N]);
void alfiere(int matrice[][N]);
void regina(int matrice[][N]);
void cavallo(int matrice[][N]);

int main()
{
int num;
int i=0;
int j=0;
int matrice[N][N];
for(i=0; i for (j=0; j matrice[i][j]=0;

scanf("%d",&num);
if (num == 1)
torre(matrice);
if (num == 2)
alfiere(matrice);
if(num == 3)
cavallo(matrice);
if(num == 4)
regina(matrice);
for(i=0; i {
for (j=0; j {
printf("%d ",matrice[i][j]);
}
printf("\n");
}
}


void torre(int matrice[][N])
{
int i=0;
int j=0;
int x=0;
int y=0;
int a=0;
int b=0;
int riga=0;
int colonna=0;

int matrice2[N][N];

for(a=0; a for(b=0; b matrice2[a][b] = 0;

/*sommo riga da dx a sx*/
for(i=0; i {
for (j=0; j {
x=i;
y=j;
while(y {
if ( matrice2[x][y+1] == 0 && (y+1) matrice[i][j] += 1;
y++;
}
}
}

/*sommo riga da sx a dx*/
for(i=0; i {
for (j=0; j {
x=i;
y=j;
while(y>0)
{
if ( matrice2[x][y-1] == 0 && (y-1)>=0)
matrice[i][j] += 1;
y--;
}
}
}

/*sommo colonna dall'alto al basso*/
for(i=0; i {
for (j=0; j {
x=i;
y=j;
while(x {
if ( matrice2[x+1][y] == 0 && (x+1) matrice[i][j] += 1;
x++;
}
}
}

/* sommo colonna dal basso all'alto*/
for(i=0; i {
for (j=0; j {
x=i;
y=j;
while(x>0)
{
if ( matrice2[x-1][y] == 0 && (x-1)>=0)
matrice[i][j] += 1;
x--;
}
}
}
}

void alfiere(int matrice[][N])
{
int i=0;
int j=0;
int a=0;
int b=0;
int x=0;
int y=0;
int matrice2[N][N];

for(a=0; a for(b=0; b matrice2[a][b] = 0;

/*diagonale da sinistra a destra verso l'alto*/
for(i=0; i {
for (j=0; j {
x=i;
y=j;
while(x>0)
{
if ( matrice2[x-1][y+1] == 0 && (x-1)>=0 && (y+1) matrice[i][j] += 1;
x--;
y++;
}
}
}

/* da sx a dx verso il basso*/
for(i=0; i {
for (j=0; j {
x=i;
y=j;
while(x {
if ( matrice2[x+1][y+1] == 0 && (x+1) matrice[i][j] += 1;
x++;
y++;
}
}
}

/*da dx a sx verso l'alto*/
for(i=0; i {
for (j=0; j {
x=i;
y=j;
while(x>0)
{
if ( matrice2[x-1][y-1] == 0 && (x-1)>=0 && (y-1)>=0)
matrice[i][j] += 1;
x--;
y--;
}
}
}

/*da dx a sx verso il basso*/
for(i=0; i {
for (j=0; j {
x=i;
y=j;
while(x {
if ( matrice2[x+1][y-1] == 0 && (x+1)=0)
matrice[i][j] += 1;
x++;
y--;
}
}
}



}

/* torre + alfiere */
void regina(int matrice[][N])
{
alfiere(matrice);
torre (matrice);
}


void cavallo(int matrice[][N])
{
int i=0;
int j=0;
int a=0;
int b=0;
int matrice2[N][N];

for(a=0; a for(b=0; b matrice2[a][b] = 0;

a=0;
b=0;
for(i=0; i {

b=0;
for (j=0; j {

if(matrice2[a+2][b+1] == 0 && (a+2) matrice[i][j] += 1;
if (matrice2[a+1][b+2] == 0 && (a+1) matrice[i][j] += 1;
if (matrice2[a-1][b-2] == 0 && (a-1)>=0 && (b-2)>=0)
matrice[i][j] += 1;
if (matrice2[a-2][b-1] == 0 && (a-2)>=0 && (b-1)>=0)
matrice[i][j] += 1;
if (matrice2[a-1][b+2] == 0 && (a-1)>=0 && (b+2) matrice[i][j] += 1;
if (matrice2[a+1][b-2] == 0 && (b-2)>=0 && (a+1) matrice[i][j] += 1;
if (matrice2[a+2][b-1] == 0 && (b-1)>=0 && (a+2) matrice[i][j] += 1;
if (matrice2[a-2][b+1] == 0 && (a-2)>=0 && (b+1) matrice[i][j] += 1;
}
}
}

Commenti