Oppure

Loading
19/03/09 14:03
gigisoft
Postato originariamente da pollon85:

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!!!!8-|



Piccolo errore ( D'oh!!! ) allora negli if è:
  printf("Pedone in %c%d\n",colonne[i - 1], j);


:k:

Luigi
aaa
19/03/09 22:07
pollon85
Ora sono riuscita a modificarlo tutto e finalmente funziona :love:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>

void printScacchiera(char [][8]);
void MosseCavallo(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("Cavallo in %c%d puo' catturare i seguenti pedoni: \n\n",colonne[posCol],8-posRiga);
   MosseCavallo(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 MosseCavallo(char scacchiera[][8],char colonne[], int posRiga, int posCol)
{
int i = posRiga, j = posCol, pedoneTrovato = 0;
if ((scacchiera[i - 1][j - 2] == 'P') && (1<=(i - 1)<=8 ) && (1<=(j - 2) <=8))
    {
     printf("Pedone in %c%d\n",colonne[j - 2], 8 - (i - 1));
     pedoneTrovato++;
    }

if ((scacchiera[i + 1][j - 2] == 'P')&& (1<=(i + 1) <=8) && (1<=(j - 2) <=8))
    {
     printf("Pedone in %c%d\n",colonne[j - 2], 8 - (i + 1));
     pedoneTrovato++;
    }

if ((scacchiera[i + 2][j - 1] == 'P') && (1<=(i + 2) <=8) && (1<=(j - 1) <=8))
    {
     printf("Pedone in %c%d\n",colonne[j - 1], 8 -(i + 2));
     pedoneTrovato++;
    }

if ((scacchiera[i + 2][j + 1] == 'P') && (1<=(i + 2) <=8) && (1<=(j + 1) <=8))
    {
     printf("Pedone in %c%d\n",colonne[j + 1], 8 - (i + 2));
     pedoneTrovato++;
    }

if ((scacchiera[i + 1][j + 2] == 'P') && (1<=(i + 1) <=8) && (1<=(j + 2) <=8))
    {
     printf("Pedone in %c%d\n",colonne[j + 2], 8 - (i + 1));
     pedoneTrovato++;
    }

if ((scacchiera[i - 1][j + 2] == 'P') && (1<=(i - 1) <=8) && (1<=(j + 2) <=8))
    {
     printf("Pedone in %c%d\n",colonne[j + 2], 8 - (i - 1));
     pedoneTrovato++;
    }

if ((scacchiera[i - 2][j + 1] == 'P') && (1<=(i - 2) <=8) && (1<=(j + 1)<=8))
    {
     printf("Pedone in %c%d\n",colonne[j + 1], 8 - (i - 2));
     pedoneTrovato++;
    }

if ((scacchiera[i - 2][j - 1] == 'P') && (1<=(i - 2) <=8) && (1<=(j - 1) <=8))
    {
     printf("Pedone in %c%d\n",colonne[j - 1], 8 - (i + 2));
     pedoneTrovato++;
    }
  
} 

grazie infinite :hail: per tutto l'aiuto che mi hai dato!!!:hail:
aaa
20/03/09 8:51
gigisoft
Postato originariamente da pollon85:

Ora sono riuscita a modificarlo tutto e finalmente funziona :love:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>

void printScacchiera(char [][8]);
void MosseCavallo(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("Cavallo in %c%d puo' catturare i seguenti pedoni: \n\n",colonne[posCol],8-posRiga);
   MosseCavallo(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 MosseCavallo(char scacchiera[][8],char colonne[], int posRiga, int posCol)
{
int i = posRiga, j = posCol, pedoneTrovato = 0;
if ((scacchiera[i - 1][j - 2] == 'P') && (1<=(i - 1)<=8 ) && (1<=(j - 2) <=8))
    {
     printf("Pedone in %c%d\n",colonne[j - 2], 8 - (i - 1));
     pedoneTrovato++;
    }

if ((scacchiera[i + 1][j - 2] == 'P')&& (1<=(i + 1) <=8) && (1<=(j - 2) <=8))
    {
     printf("Pedone in %c%d\n",colonne[j - 2], 8 - (i + 1));
     pedoneTrovato++;
    }

if ((scacchiera[i + 2][j - 1] == 'P') && (1<=(i + 2) <=8) && (1<=(j - 1) <=8))
    {
     printf("Pedone in %c%d\n",colonne[j - 1], 8 -(i + 2));
     pedoneTrovato++;
    }

if ((scacchiera[i + 2][j + 1] == 'P') && (1<=(i + 2) <=8) && (1<=(j + 1) <=8))
    {
     printf("Pedone in %c%d\n",colonne[j + 1], 8 - (i + 2));
     pedoneTrovato++;
    }

if ((scacchiera[i + 1][j + 2] == 'P') && (1<=(i + 1) <=8) && (1<=(j + 2) <=8))
    {
     printf("Pedone in %c%d\n",colonne[j + 2], 8 - (i + 1));
     pedoneTrovato++;
    }

if ((scacchiera[i - 1][j + 2] == 'P') && (1<=(i - 1) <=8) && (1<=(j + 2) <=8))
    {
     printf("Pedone in %c%d\n",colonne[j + 2], 8 - (i - 1));
     pedoneTrovato++;
    }

if ((scacchiera[i - 2][j + 1] == 'P') && (1<=(i - 2) <=8) && (1<=(j + 1)<=8))
    {
     printf("Pedone in %c%d\n",colonne[j + 1], 8 - (i - 2));
     pedoneTrovato++;
    }

if ((scacchiera[i - 2][j - 1] == 'P') && (1<=(i - 2) <=8) && (1<=(j - 1) <=8))
    {
     printf("Pedone in %c%d\n",colonne[j - 1], 8 - (i + 2));
     pedoneTrovato++;
    }
  
} 

grazie infinite :hail: per tutto l'aiuto che mi hai dato!!!:hail:


Attenta che forse nell'ultimo if, nella printf dovrebbe essere (i - 2)
controlla anche gli altri.

Luigi
aaa
20/03/09 22:50
pollon85
grazie per l'ennesimo errore che mi hai fatto vedere :D
controllerò di nuovo tutto il codice :yup:
grazie mille!!! :hail:
aaa