blob: 9282581640990b00a5df510cb95f2eff0f979c8c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
#include <stdio.h>
#include <stdlib.h>
#include "print.h"
#include "board.h"
#include "coordinate.h"
#include "piece.h"
static void _print_row_separator() {
int j;
for (j = 0; j < SIZE; j++)
printf("+---");
printf("+\n");
}
static Coord _next_coord(Coord c, Color side) {
if (side == WHITE)
return coord_next(c);
else
return coord_prev(c);
}
/* Printing related functions */
void print_piece(Piece p) {
putchar(piece_character(p));
}
void print_square(Square s) {
if (s.piece == NULL)
if (s.color == WHITE)
putchar(' ');
else
putchar('/');
else
print_piece(*s.piece);
}
/*
* Pretty print the board. The "side" parameter lets you choose the
* orientation. Use WHITE for a white player perspective, BLACK otherwise.
*/
void print_board(Board b, Color side) {
Coord c = _next_coord(coord_null(), side);
char current_row = c.row;
_print_row_separator();
while (!coord_is_null(c)) {
// Print the square
printf("| ");
print_square(board_get_square(b, c));
putchar(' ');
// Shall we move forward or backwards?
c = _next_coord(c, side);
// If the row changed then we must start a new line
if (c.row != current_row) {
printf("|\n");
_print_row_separator();
current_row = c.row;
}
}
}
|