View Single Post
Old 26-08-2010, 09:37   #9
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
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.

Ultima modifica di cionci : 26-08-2010 alle 09:40.
cionci è offline   Rispondi citando il messaggio o parte di esso