2 * =====================================================================================
6 * Description: Handle the othello board content
9 * Created: 25/04/2017 15:16:08
13 * Author: Jerome Benoit (fraggle), jerome.benoit@piment-noir.org
14 * Organization: Piment Noir
16 * =====================================================================================
24 unsigned int current_player(unsigned int round_count
) {
26 if (round_count
% 2 != 0) {
33 /* for consitency with ncurses, the board coordinates are in the following order:
40 unsigned int get_box_value(int y
, int x
, unsigned int pawn_array
[board_size
][board_size
]) {
42 return pawn_array
[y
][x
];
45 bool is_box_type(int y
, int x
, unsigned int pawn_array
[board_size
][board_size
], unsigned int type
) {
50 if (get_box_value(y
, x
, pawn_array
) == type
) {
57 /* helper function to set a value != empty at the (y, x) in the pawns array */
58 int** set_pawn(int y
, int x
, unsigned int type
, unsigned int pawn_array
[board_size
][board_size
]) {
60 if (is_box_type(y
, x
, pawn_array
, empty
)) {
61 pawn_array
[y
][x
] = type
;
68 static int** zero_pawns(unsigned int pawn_array
[board_size
][board_size
]) {
69 for (unsigned int i
= 0; i
< board_size
; i
++) {
70 for (unsigned int j
= 0; j
< board_size
; j
++) {
71 pawn_array
= set_pawn(i
, j
, empty
, pawn_array
);
77 /* set the pawns in the start position */
78 int** init_pawns(unsigned int pawn_array
[board_size
][board_size
]) {
80 pawn_array
= zero_pawns(pawn_array
);
81 pawn_array
= set_pawn(5, 4, black
, pawn_array
);
82 pawn_array
= set_pawn(4, 5, black
, pawn_array
);
83 pawn_array
= set_pawn(4, 4, white
, pawn_array
);
84 pawn_array
= set_pawn(5, 5, white
, pawn_array
);
88 unsigned int count_pawn_type(unsigned int pawn_array
[board_size
][board_size
], unsigned int type
) {
89 unsigned int count
= 0;
94 for (unsigned int i
= 0; i
< board_size
; i
++) {
95 for (unsigned int j
= 0; j
< board_size
; j
++) {
96 if (pawn_array
[i
][j
] == type
) {