In sostanza a te serve capire se una casella è occupata o meno, no ?
Senza ricorrere a strutture dati troppo complesse (dando una numerazione ai pezzi):
Codice:
int scacchiera[8][8];
bool casella_libera(int scacchiera[8][8], int x, int y)
{
return scacchiera[x][y] == 0;
}
bool muovi_pezzo(int scacchiera[8][8], int x1, int y1, int x2, int y2)
{
if(!casella_libera(scacchiera, x2, y2))
return false;
scacchiera[x2][y2] = scacchiera[x1][y1];
scacchiera[x1][y1] = 0;
return true;
}
Ovviamente la scacchiera dovrà essere inizializzata contenente tutti 0.
In questo modo int cop(int r,char c) si riduce a:
Codice:
int cop(int r,char c)
{
return (casella_libera(scacchiera, r, tcci(c))) ? 0 : 1;
}
In sostanza rivendendo meglio come mantenere i dati sulla posizione e sui pezzi, ottieni dei miglioramenti più che significativi.