X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=TP_13%2Fexo2%2Fsrc%2Fmain.c;h=0606beba47b507e5f49dbf755df029a907a27075;hb=2737ed7c252e5f624b8f98cbe28eb05450c9420e;hp=fcd3bcc04279d7d61d6f5b838e00794d10f6f7ad;hpb=7515f89753dd7d16c4f2a9b11003f67d8148eb09;p=TD_C.git diff --git a/TP_13/exo2/src/main.c b/TP_13/exo2/src/main.c index fcd3bcc..0606beb 100644 --- a/TP_13/exo2/src/main.c +++ b/TP_13/exo2/src/main.c @@ -1,36 +1,95 @@ #include #include +#include #include #include "display.h" +#include "coordinates.h" int main() { - int row, col; + int row, col, errno = 0, round = 0, player = 0, key_pressed; + char* top_msg = ""; + char* back_msg = ""; initscr(); - getmaxyx(stdscr,row,col); + getmaxyx(stdscr, row, col); noecho(); curs_set(0); + /* array of the active coordinates in the entered order */ + coordinates_t coordinates_array[MAX_COORDINATES]; + init_coordinates(coordinates_array); + coordinates_t new_coordinates = {0, 0, 0}; + /* center base coordinates for the board */ - const int base_y = row/2 - 4; - const int base_x = col/2 - 7; + int base_y = row/2 - 4; + int base_x = col/2 - 7; print_board(base_y, base_x); - print_x(base_y, base_x + 1); - print_o(base_y, base_x + 6); - print_o(base_y, base_x + 11); - print_o(base_y + 3, base_x + 1); - print_o(base_y + 6, base_x + 1); - print_o(base_y + 3, base_x + 6); - print_x(base_y + 3, base_x + 11); - print_x(base_y + 6, base_x + 6); - print_x(base_y + 6, base_x + 11); - - refresh(); - - while (getch() != 'q'); + do { + if (round % 2 == 0 || round == 0) { + player = 0; + top_msg = "Joueur 1 joue"; + } else { + player = 1; + top_msg = "Joueur 2 joue"; + } + + mvprintw(base_y - 2, (base_x + 7 - strlen(top_msg)/2), top_msg); + mvprintw(base_y + 10, (base_x + 7 - strlen(back_msg)/2), back_msg); + + print_coordinates(coordinates_array, base_y, base_x); + + key_pressed = getch(); + switch (key_pressed) { + case 'a': + new_coordinates = set_coordinates(1, 1, player); + break; + case 'z': + new_coordinates = set_coordinates(1, 2, player); + break; + case 'e': + new_coordinates = set_coordinates(1, 3, player); + break; + case 'q': + new_coordinates = set_coordinates(2, 1, player); + break; + case 's': + new_coordinates = set_coordinates(2, 2, player); + break; + case 'd': + new_coordinates = set_coordinates(2, 3, player); + break; + case 'w': + new_coordinates = set_coordinates(3, 1, player); + break; + case 'x': + new_coordinates = set_coordinates(3, 2, player); + break; + case 'c': + new_coordinates = set_coordinates(3, 3, player); + break; + default: + continue; + break; + } + + errno = add_coordinates(new_coordinates, coordinates_array); + + if (errno == 2) { + back_msg = "Choisir une case vide"; + continue; + } else if (errno == 3) { + back_msg = "Coordonnees invalides"; + continue; + } else if (errno == 0) { + back_msg = ""; + } + + round++; + + } while (errno == 0 || errno == 2); endwin();