X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=TP_13%2Fexo2%2Flib%2Fcoordinates.c;h=ef80ba9d8b8bfe77da68c9d81fb73caddc2874e1;hb=9c2b41f4a3539f1087e5560d8ceb301978f8a55b;hp=2f02405f9f24f4d678cd297bfd739d7702e01a72;hpb=8f8629b25f848dcf37e4786e4c3d5af60e3de37f;p=TD_C.git diff --git a/TP_13/exo2/lib/coordinates.c b/TP_13/exo2/lib/coordinates.c index 2f02405..ef80ba9 100644 --- a/TP_13/exo2/lib/coordinates.c +++ b/TP_13/exo2/lib/coordinates.c @@ -18,7 +18,7 @@ #include "coordinates.h" -void init_coordinates(coordinates_t* coordinates_array) { +void zero_coordinates(coordinates_t* coordinates_array) { for (unsigned i = 0; i < MAX_COORDINATES; i++) { coordinates_array[i] = set_coordinates(0, 0, 0); @@ -35,17 +35,18 @@ coordinates_t set_coordinates(int y, int x, unsigned type) { } /* FIXME: Does it worth doing a coordinates_t get_coordinates(int y, int x, unsigned type); helper function? */ -/* Or a int get_coordinates_x(int y, int x, unsigned type); helper function? */ +/* Or a int get_coordinates_x(coordinates_t coordinates); helper function? */ /* the function do a lot of sanity checks before adding new board elements, - * hence the loop. moving the checks in the main loop is also possible */ + * hence the loop. moving the checks in the main loop is also possible. + * for now, just branch in the main loop given this function error value returned. */ unsigned add_coordinates(coordinates_t new_coordinates, coordinates_t* coordinates_array, unsigned round) { /* valid coordinates are in the [1-3] range */ if (new_coordinates.y < 1 || new_coordinates.y > 3 || new_coordinates.x < 1 || new_coordinates.x > 3) { return 3; /* error value for invalid coordinates */ - } else if (round == MAX_COORDINATES) { - /* round is off-by-one */ + } else if (round == MAX_COORDINATES - 1) { + /* round is off-by-one vs. MAX_COORDINATES */ coordinates_array[MAX_COORDINATES - 1] = new_coordinates; return 1; /* error value for full array */ } @@ -65,7 +66,7 @@ static bool chk_line(coordinates_t* coordinates_array, int line_number, unsigned unsigned nb_o_align = 0; unsigned nb_x_align = 0; - for (unsigned i = 0; i < round; i++) { + for (unsigned i = 0; i <= round; i++) { /* check if they are all the same */ if ((coordinates_array + i)->y == line_number && (coordinates_array + i)->type == 0) { nb_o_align++; @@ -84,7 +85,7 @@ static bool chk_column(coordinates_t* coordinates_array, int column_number, unsi unsigned nb_o_align = 0; unsigned nb_x_align = 0; - for (unsigned i = 0; i < round; i++) { + for (unsigned i = 0; i <= round; i++) { /* check if they are all the same */ if ((coordinates_array + i)->x == column_number && (coordinates_array + i)->type == 0) { nb_o_align++; @@ -104,7 +105,7 @@ static bool chk_diagonals(coordinates_t* coordinates_array, unsigned round) { unsigned nb_o_diag_one = 0, nb_o_diag_two = 0; unsigned nb_x_diag_one = 0, nb_x_diag_two = 0; - for (unsigned i = 0; i < round; i++) { + for (unsigned i = 0; i <= round; i++) { /* dumb count of each elements type in the two diagonals */ for (int y_x_diag = 1; y_x_diag < 4; y_x_diag++) { if ((coordinates_array + i)->y == y_x_diag && (coordinates_array + i)->x == y_x_diag && (coordinates_array + i)->type == 0) { @@ -129,8 +130,8 @@ static bool chk_diagonals(coordinates_t* coordinates_array, unsigned round) { bool chk_win_conditions(coordinates_t* coordinates_array, unsigned round) { - /* winning conditions begin at round = 5 */ - if (round > 4) { + /* winning conditions begin at round = 4 */ + if (round > 3) { if (chk_diagonals(coordinates_array, round)) { return true; }