Δημοσιεύτηκε: 07 Απρ 2012, 18:46
Έκανα μια εναλλακτική υλοποίηση, με 3ο πεδίο στο struct για τον χαρακτήρα εκτύπωσης του κάθε τετραγώνου...
Με κεφαλαία γράμματα τα μαύρα, με πεζά τα λευκά.
- Μορφοποιημένος Κώδικας: Επιλογή όλων
-
#include <stdio.h>
#include <stdlib.h>
enum Piece {EMPTY=0, P, N, B, R, Q, K}; /* pawn, knight, bishop, rook, queen, king*/
enum Color { BL=0, WH };
typedef struct Square {
enum Piece piece;
enum Color color;
char cout;
} Square;
/* ------------------------------------------------------
*
* ------------------------------------------------------
*/
void board_print( Square board[][8] )
{
if ( !board ) {
puts("*** internal error: invalid parameter...");
return;
}
for (int i=0; i < 8; i++)
{
for (int j=0; j < 8; j++ ) {
char c = board[i][j].cout;
if ( '\0' == c )
printf( ". " );
else
printf( "%c ", c );
}
puts("\b");
}
return;
}
/* ------------------------------------------------------
*
* ------------------------------------------------------
*/
int main( void )
{
Square board[8][8] = {
{ /* black back-row*/
{R,BL,'R'}, {N,BL,'K'}, {B,BL,'B'}, {K,BL,'K'},
{Q,BL,'Q'}, {B,BL,'B'}, {N,BL,'N'}, {R,BL,'R'}
},
{ /* black fornt-row */
{P,BL,'P'}, {P,BL,'P'}, {P,BL,'P'}, {P,BL,'P'},
{P,BL,'P'}, {P,BL,'P'}, {P,BL,'P'}, {P,BL,'P'}
},
{ {EMPTY,BL,'\0'} },
{ {EMPTY,BL,'\0'} },
{ {EMPTY,BL,'\0'} },
{ {EMPTY,BL,'\0'} },
{ /* white front-row */
{P,WH,'p'}, {P,WH,'p'}, {P,WH,'p'}, {P,WH,'p'},
{P,WH,'p'}, {P,WH,'p'}, {P,WH,'p'}, {P,WH,'p'}
},
{ /* white back-row */
{R,WH,'r'}, {N,WH,'n'}, {B,WH,'b'}, {K,WH,'k'},
{Q,WH,'q'}, {B,WH,'b'}, {N,WH,'n'}, {R,WH,'r'}
}
};
board_print( board );
system("pause"); /* windows only */
exit( EXIT_SUCCESS );
}
Με κεφαλαία γράμματα τα μαύρα, με πεζά τα λευκά.