Properly implement the validation of a shot and reverse or flip the
[Project_algorithmic_C.git] / lib / othello.h
index a591405db2563216aba4452a265b9d895fdc9801..dc6784ea58307edfa57ad118eeab1cad9a61b997 100644 (file)
 #ifndef OTHELLO_H
 #define OTHELLO_H
 
+#include <stdbool.h>
+
 #include "constants.h"
 #include "list.h"
 
-/* TODO: must be used to replace the explicit pawns 2D array */
-struct pawns_s {
-    unsigned int pawns[board_size][board_size];
-};
-
-/* linked list of played shots */
-struct shots_history_list_s {
-    struct list_head list;
-    unsigned int*** pawn_array_member; /* pointer to a cell of the pawns 2D array */
-    /* struct* pawns_s pawn */
-};
-
 /* linked list of can play shots */
-struct shots_exploration_s {
+struct shots_list_s {
     struct list_head list;
     int y;
     int x;
-    unsigned int type;
+    unsigned int type; /* can be white or black or hint allowed or hint_fordidden */
 };
 
 unsigned int current_player(unsigned int round_count);
 unsigned int eval_winner(unsigned int nb_white, unsigned int nb_black);
 
-int** init_pawns(unsigned int pawn_array[board_size][board_size]);
+void zero_pawns(unsigned int pawn_array[board_size][board_size]);
+void init_pawns(unsigned int pawn_array[board_size][board_size]);
 unsigned int get_box_value(int y, int x, unsigned int pawn_array[board_size][board_size]);
-int** set_pawn(int y, int x, unsigned int type, unsigned int pawn_array[board_size][board_size]);
+void set_pawn(int y, int x, unsigned int type, unsigned int pawn_array[board_size][board_size]);
 
-bool is_valid_input(int y, int x, unsigned int pawn_array[board_size][board_size]);
 bool is_box_type(int y, int x, unsigned int pawn_array[board_size][board_size], unsigned int type);
 bool is_board_full(unsigned int pawn_array[board_size][board_size]);
 
-unsigned int count_pawn_type(unsigned int pawn_array[board_size][board_size], unsigned int type);
+unsigned int count_pawns_type(unsigned int pawn_array[board_size][board_size], unsigned int type);
+
+unsigned int valid_shot(int y, int x, unsigned int current_player, unsigned int     pawn_array[board_size][board_size]);
 
 #endif /* OTHELLO_H */