7 #include "coordinates.h"
10 int row
, col
, errno
= 0, round
= 0, player
= 0, key_pressed
;
11 const int str_max_length
= 255;
12 char* top_msg
= malloc(str_max_length
* sizeof(char));
13 char* back_msg
= malloc(str_max_length
* sizeof(char));
16 getmaxyx(stdscr
, row
, col
);
20 /* array of the active coordinates in the entered order */
21 coordinates_t coordinates_array
[MAX_COORDINATES
];
22 init_coordinates(coordinates_array
);
23 coordinates_t new_coordinates
= {0, 0, 0};
25 /* center base coordinates for the board */
26 int base_y
= row
/2 - 4;
27 int base_x
= col
/2 - 7;
29 print_board(base_y
, base_x
);
32 if (errno
== 0) round
++;
36 top_msg
= "Joueur 2 joue";
39 top_msg
= "Joueur 1 joue";
42 mvprintw(base_y
- 2, (base_x
+ 7 - strlen(top_msg
)/2), top_msg
);
44 print_coordinates(coordinates_array
, base_y
, base_x
);
46 /* getch() is blocking */
47 key_pressed
= getch();
48 switch (key_pressed
) {
50 new_coordinates
= set_coordinates(1, 1, player
);
53 new_coordinates
= set_coordinates(1, 2, player
);
56 new_coordinates
= set_coordinates(1, 3, player
);
59 new_coordinates
= set_coordinates(2, 1, player
);
62 new_coordinates
= set_coordinates(2, 2, player
);
65 new_coordinates
= set_coordinates(2, 3, player
);
68 new_coordinates
= set_coordinates(3, 1, player
);
71 new_coordinates
= set_coordinates(3, 2, player
);
74 new_coordinates
= set_coordinates(3, 3, player
);
77 /* set invalid coordinates */
78 new_coordinates
= set_coordinates(0, 0, player
);
82 errno
= add_coordinates(new_coordinates
, coordinates_array
, round
);
85 back_msg
= "Choisir une case vide";
86 } else if (errno
== 3) {
87 back_msg
= "Coordonnees invalides";
88 } else if (errno
== 1) {
89 back_msg
= "Tableau rempli sans gagnant: egalite";
90 } else if (errno
== 4) {
91 back_msg
= "Erreur inconnue";
92 } else if (errno
== 0) {
93 /* FIXME: properly zero the string */
97 mvprintw(base_y
+ 10, (base_x
+ 7 - strlen(back_msg
)/2), back_msg
);
101 } while (errno
!= 1);