return nb_pawns_reversed;
}
-/* loop optimized version of valid_shot changing nothing to the pawns 2D array */
-static bool is_legal_shot(int y, int x, unsigned int current_player, unsigned int pawn_array[board_size][board_size]) {
+/* loop optimized version of valid_shot function changing nothing to the pawns 2D array */
+bool is_legal_shot(int y, int x, unsigned int current_player, unsigned int pawn_array[board_size][board_size]) {
unsigned int nb_pawns_reversed = 0;
if (!is_valid_coordinates(y, x) || !is_box_type(y, x, pawn_array, empty)) {
unsigned int count_pawns_type(unsigned int pawn_array[board_size][board_size], unsigned int type);
+bool is_legal_shot(int y, int x, unsigned int current_player, unsigned int pawn_array[board_size][board_size]);
unsigned int valid_shot(int y, int x, unsigned int current_player, unsigned int pawn_array[board_size][board_size]);
void build_playable_shots_list(unsigned int current_player, struct shots_list_s* shots_list, unsigned int pawn_array[board_size][board_size]);
build_playable_shots_list(player, &playable_shots, pawns);
print_shots_list(board_center_y, board_center_x, &playable_shots);
- free_shots_list(&playable_shots);
display_array(1, 1, pawns);
const char* prompt_msg = "Prochain pion ? (ligne colonne - chiffre lettre):";
int prmt_rt = prompt_values(stdscr, center_y + 26/2 + 1, (center_x - strlen(prompt_msg)/2), prompt_msg, &y, &x_char);
int x = map_col_letter_to_index(x_char);
- nb_pawns_reversed = valid_shot(y, x, player, pawns);
- if (nb_pawns_reversed > 0 && prmt_rt == 1) {
+ /* TODO: a comparaison to the linked list of playable shots is better */
+ if (is_legal_shot(y, x, player, pawns) && prmt_rt == 1) {
+ nb_pawns_reversed = valid_shot(y, x, player, pawns);
input_ok = true;
clear();
} else {
}
} while (!input_ok);
+ free_shots_list(&playable_shots);
+
round++; /* increment the round count */
/* here are all the end of the game conditions */