2 * =====================================================================================
6 * Description: Routines to handle the display
9 * Created: 15/03/2017 20:06:11
13 * Author: Jerome Benoit (fraggle), jerome.benoit@piment-noir.org
14 * Organization: Piment Noir
16 * =====================================================================================
23 /* in all print routine, y and x are the coordinates of the first character of the shape
24 * which can be a space ' ' */
26 /* FIXME: one can split this shape in building blocks and build it using them */
27 void print_board(int y
, int x
) {
29 mvprintw(y
, x
, " | |");
30 mvprintw(y
+1, x
, " | |");
31 mvprintw(y
+2, x
, "----+----+----");
32 mvprintw(y
+3, x
, " | |");
33 mvprintw(y
+4, x
, " | |");
34 mvprintw(y
+5, x
, "----+----+----");
35 mvprintw(y
+6, x
, " | |");
36 mvprintw(y
+7, x
, " | |");
39 /* there's only nine valid (y, x) 2-uplets for this two shapes
40 * that are : - base_y, base_x +1
41 * - base_y, base_x + 6
42 * - base_y, base_x + 11
43 * - base_y + 3, base_x + 1
44 * - base_y + 6, base_x + 1
45 * - base_y + 3, base_x + 6
46 * - base_y + 3, base_x + 11
47 * - base_y + 6, base_x + 6
48 * - base_y + 6, base_x + 11
49 * The added (y, x) couple values can be {0, 3, 6}x{1, 6, 11}
52 static void print_x(int y
, int x
) {
54 mvprintw(y
, x
, "\\/");
55 mvprintw(y
+1, x
,"/\\");
58 static void print_o(int y
, int x
) {
60 mvprintw(y
, x
, "/\\");
61 mvprintw(y
+1, x
, "\\/");
64 /* y: 1 -> +0 x: 1 -> +1
67 static int remap_y(int y
) {
71 } else if (y
> 1 && y
<= 3) {
72 return (remap_y(y
- 1) + 3);
78 static int remap_x(int x
) {
82 } else if (x
> 1 && x
<= 3) {
83 return (remap_x(x
- 1) + 5);
89 void print_coordinates(coordinates_t coordinates_array
[], int base_y
, int base_x
) {
92 while ((coordinates_array
+ i
)->y
!= 0 && (coordinates_array
+ i
)->x
!= 0 && \
93 i
< MAX_COORDINATES
) {
94 if ((coordinates_array
+ i
)->type
== 0) {
95 print_o(base_y
+ remap_y((coordinates_array
+ i
)->y
), base_x
+ remap_x((coordinates_array
+ i
)->x
));
97 print_x(base_y
+ remap_y((coordinates_array
+ i
)->y
), base_x
+ remap_x((coordinates_array
+ i
)->x
));