Forum - C/C++
- Algoritmo scacchi - Pagina 5
pollon85 (Normal User)
Newbie
Messaggi: 13
Iscritto: 17/03/2009
Ora sono riuscita a modificarlo tutto e finalmente funziona
Codice sorgente - presumibilmente C++
#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
per tutto l'aiuto che mi hai dato!!!
gigisoft (Member )
Guru
Messaggi: 696
Iscritto: 11/10/2008
Postato originariamente da pollon85 :
Ora sono riuscita a modificarlo tutto e finalmente funziona
Codice sorgente - presumibilmente C++
#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
per tutto l'aiuto che mi hai dato!!!
Attenta che forse nell'ultimo if, nella printf dovrebbe essere (i - 2)
controlla anche gli altri.
Luigi
pollon85 (Normal User)
Newbie
Messaggi: 13
Iscritto: 17/03/2009
grazie per l'ennesimo errore che mi hai fatto vedere
controllerò di nuovo tutto il codice
grazie mille!!!