c5f83b7be7f05a2e4192b69f2ec2387d9f3945a6
[Project_algorithmic_C.git] / lib / ui.c
1 /*
2 * =====================================================================================
3 *
4 * Filename: ui.c
5 *
6 * Description: Routines to handle the user interface
7 *
8 * Version: 1.0
9 * Created: 24/04/2017 16:41:15
10 * Revision: none
11 * Compiler: gcc
12 *
13 * Author: Jerome Benoit (fraggle), jerome.benoit@piment-noir.org
14 * Organization: Piment Noir
15 *
16 * =====================================================================================
17 */
18
19 #include <ncurses.h>
20
21 #include "ui.h"
22
23 /* in all print routine, y and x are the coordinates of the first character of the shape
24 * which can be a space ' ' */
25
26 /* FIXME: one can split this shape in building blocks and build it using them */
27 void print_board(int y, int x) {
28
29 mvprintw(y, x, " A | B | C | D | E | F | G | H");
30 mvprintw(y+1, x, " -----+----+----+----+----+----+----+-----");
31 mvprintw(y+2, x, "1| | | | | | | | |");
32 mvprintw(y+3, x, " | | | | | | | | |");
33 mvprintw(y+4, x, " +----+----+----+----+----+----+----+----+");
34 mvprintw(y+5, x, "2| | | | | | | | |");
35 mvprintw(y+6, x, " | | | | | | | | |");
36 mvprintw(y+7, x, " +----+----+----+----+----+----+----+----+");
37 mvprintw(y+8, x, "3| | | | | | | | |");
38 mvprintw(y+9, x, " | | | | | | | | |");
39 mvprintw(y+10, x, " +----+----+----+----+----+----+----+----+");
40 mvprintw(y+11, x, "4| | | | | | | | |");
41 mvprintw(y+12, x, " | | | | | | | | |");
42 mvprintw(y+13, x, " +----+----+----+----+----+----+----+----+");
43 mvprintw(y+14, x, "5| | | | | | | | |");
44 mvprintw(y+15, x, " | | | | | | | | |");
45 mvprintw(y+16, x, " +----+----+----+----+----+----+----+----+");
46 mvprintw(y+17, x, "7| | | | | | | | |");
47 mvprintw(y+18, x, " | | | | | | | | |");
48 mvprintw(y+19, x, " +----+----+----+----+----+----+----+----+");
49 mvprintw(y+20, x, "8| | | | | | | | |");
50 mvprintw(y+21, x, " | | | | | | | | |");
51 mvprintw(y+22, x, " -----+----+----+----+----+----+----+-----");
52 }
53
54 static void print_x(int y, int x, int type) {
55
56 mvprintw(y, x, "\\/");
57 mvprintw(y+1, x,"/\\");
58 }
59
60 static void print_o(int y, int x, int type) {
61
62 mvprintw(y, x, "/\\");
63 mvprintw(y+1, x, "\\/");
64 }
65
66 /* y = 1: y -> 0 x = 1: 1 -> 1
67 * y > 2: y -> y + 3 2 -> +6 */
68
69 static int remap_y(int y) {
70
71 if (y == 1) {
72 return 0;
73 } else if (y > 1) {
74 return y + 3;
75 }
76 }
77
78 static int remap_x(int x) {
79
80 if (x == 1) {
81 return 1;
82 } else if (x > 2) {
83 return x + 5;
84 }
85 }