Scusami se ancora scrivo...alla fine dopo averlo riprovato ho visto che non mi trovo sempre.Il codice finale che ho scritto è:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
void printScacchiera(char [][8]);
void MossaCavallo(char [][8],char [], int, int);
void main(void)
{
int i;
int posRiga, posCol;
char colonne[8] = {'a','b','c','d','e','f','g','h'};
char scacchiera[][8] =
{{'b','n','b','n','b','n','b','n'},
{'n','b','n','b','n','b','n','b'},
{'b','n','b','n','b','n','b','n'},
{'n','b','n','b','n','b','n','b'},
{'b','n','b','n','b','n','b','n'},
{'n','b','n','b','n','b','n','b'},
{'b','n','b','n','b','n','b','n'},
{'n','b','n','b','n','b','n','b'}};
srand(time(NULL));
i = 0;
while(i<8)
{
posRiga = rand()%8;
posCol = rand()%8;
if(scacchiera[posRiga][posCol] == 'b' || scacchiera[posRiga][posCol] == 'n')
{
scacchiera[posRiga][posCol] = 'P';
i++;
}
}
i = 0;
while(i<1)
{
posRiga = rand()%8;
posCol = rand()%8;
if(scacchiera[posRiga][posCol] == 'b' || scacchiera[posRiga][posCol] == 'n')
{
scacchiera[posRiga][posCol] = 'C'; // Cavallo
i++;
}
}
printf("Regina in %c%d puo' catturare i seguenti pedoni: \n\n",colonne[posCol],8-posRiga);
MossaCavallo(scacchiera,colonne,posRiga,posCol);
printScacchiera(scacchiera);
}
void printScacchiera(char scacchiera[][8])
{
int i,j;
printf("\n");
printf(" a b c d e f g h\n\n");
for(i=0;i<8;i++)
{
printf("%d",8-i);
for(j=0;j<8;j++)
{
printf(" %c", scacchiera[i ][j]);
}
printf("\n");
}
}
void MossaCavallo(char scacchiera[][8],char colonne[], int posRiga, int posCol)
{
int i = posCol, j = posRiga, pedoneTrovato = 0;
if ((scacchiera[j - 1][i - 2] == 'P') && ((j - 1) > 0) && ((i - 2) > 0))
{
printf("Pedone in %c%d\n",colonne[i - 2], j + 1);
pedoneTrovato++;
}
if ((scacchiera[j + 1][i - 2] == 'P')&& ((j + 1) < 9) && ((i - 2) > 0))
{
printf("Pedone in %c%d\n",colonne[i - 2], j + 1);
pedoneTrovato++;
}
if ((scacchiera[j + 2][i - 1] == 'P') && ((j + 2) < 9) && ((i - 1) > 0))
{
printf("Pedone in %c%d\n",colonne[i - 1], j + 1);
pedoneTrovato++;
}
if ((scacchiera[j + 2][i + 1] == 'P') && ((j + 2) < 9) && ((i + 1) < 9))
{
printf("Pedone in %c%d\n",colonne[i + 1], j + 1);
pedoneTrovato++;
}
if ((scacchiera[j + 1][i + 2] == 'P') && ((j + 1) < 8) && ((i + 2) < 9))
{
printf("Pedone in %c%d\n",colonne[i + 2], j + 1);
pedoneTrovato++;
}
if ((scacchiera[j - 1][i + 2] == 'P') && ((j - 1) > 0) && ((i + 2) < 9))
{
printf("Pedone in %c%d\n",colonne[i + 2], j + 1);
pedoneTrovato++;
}
if ((scacchiera[j - 2][i + 1] == 'P') && ((j - 2) > 0) && ((i + 1) < 9))
{
printf("Pedone in %c%d\n",colonne[i + 1], j + 1);
pedoneTrovato++;
}
if ((scacchiera[j - 2][i - 1] == 'P') && ((j - 2) > 0) && ((i - 1) > 0))
{
printf("Pedone in %c%d\n",colonne[i - 1], j + 1);
pedoneTrovato++;
}
}
La posizione del Cavallo la legge sempre bene,ma quella dei pedoni no
E ad esempio mandandolo in esecuzione,una delle volte mi ha detto che il pedone catturabile era in c6 e b6,mentre sulla scacchiera i pedoni stavano in c5 e b5...quindi dovrei modificare qualche iterazione?
SCUSAMI!!!!