Start functions documentation.
[Project_algorithmic_C.git] / src / main.c
index 224e35cbf347d2ef8331aa9d50ef4fe4d1589c19..99ed64ea5837c849efdd82c0dc6bbed8e5e21c28 100644 (file)
@@ -77,20 +77,25 @@ int main() {
         mvprintw(center_y, center_x - 42/2 - snprintf(NULL, 0, score_msg, "noirs", nb_black) - 2, score_msg, "noirs", nb_black);
         mvprintw(center_y, center_x + 42/2 + 2, score_msg, "blancs", nb_white);
 
-        //display_array(1, 1, pawns);
+        build_playable_shots_list(player, &playable_shots, pawns);
+        print_shots_list(board_center_y, board_center_x, &playable_shots);
+
+        display_array(1, 1, pawns);
 
         int y;
         char x_char;
         bool input_ok = false;
+        bool first_run = true;
         unsigned int nb_pawns_reversed = 0;
         do {
             y = 0;
-            x_char = "";
+            x_char = (char)"";
             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 {
@@ -98,12 +103,14 @@ int main() {
             }
         } while (!input_ok);
 
+        free_shots_list(&playable_shots);
+
         round++; /* increment the round count */
 
         /* here are all the end of the game conditions */
         if (is_board_full(pawns)) {
             print_board(board_center_y, board_center_x);
-            /* print the updated pawns before exiting */
+            /* print the updated pawns array before exiting */
             print_pawns(board_center_y, board_center_x, pawns);
             unsigned int winner = eval_winner(nb_white, nb_black);
             if (winner != 0) {