- 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();
+ do {
+ if (errno == 0) round++;
+
+ if (round % 2 == 0) {
+ player = 1;
+ top_msg = "Joueur 2 joue";
+ } else {
+ player = 0;
+ top_msg = "Joueur 1 joue";
+ }
+
+ mvprintw(base_y - 2, (base_x + 7 - strlen(top_msg)/2), top_msg);
+
+ print_coordinates(coordinates_array, base_y, base_x);
+
+ /* FIXME: group the winning case code blocks */
+ if (!winning_condition) {
+ /* getch() is blocking */
+ 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:
+ /* set invalid coordinates */
+ new_coordinates = set_coordinates(0, 0, player);
+ break;
+ }
+ errno = add_coordinates(new_coordinates, coordinates_array, round);
+ winning_condition = chk_win_conditions(coordinates_array, round);
+ }
+
+ if (winning_condition) {
+ if (player == 0) {
+ back_msg = "Joureur 1 gagne !";
+ } else {
+ back_msg = "Joureur 2 gagne !";
+ }
+ }