Fix to the const definition
[Project_algorithmic_C.git] / lib / ui.c
CommitLineData
480acfeb
JB
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 */
27void print_board(int y, int x) {
28
4ddf6f1a
JB
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, " -----+----+----+----+----+----+----+-----");
480acfeb
JB
52}
53
4ddf6f1a 54static void print_o(int y, int x, int type) {
480acfeb
JB
55
56 mvprintw(y, x, "/\\");
57 mvprintw(y+1, x, "\\/");
58}
59
2e5c1894
JB
60/* will be used for pawn placement hints */
61static void print_x(int y, int x, int type) {
62
63 mvprintw(y, x, "\\/");
64 mvprintw(y+1, x,"/\\");
65}
4ddf6f1a 66
2e5c1894
JB
67/* y = 1: y -> 0 x = 1: 1 -> 1
68 * y > 1: y -> y + 3 x > 1: x -> x + 5 */
480acfeb
JB
69static int remap_y(int y) {
70
71 if (y == 1) {
72 return 0;
4ddf6f1a 73 } else if (y > 1) {
2e5c1894 74 return (remap_y(y -1) + 3);
480acfeb
JB
75 }
76}
77
78static int remap_x(int x) {
79
80 if (x == 1) {
2e5c1894
JB
81 return x;
82 } else if (x > 1) {
83 return (remap_x(x - 1) + 5);
84 }
85}
86
87void print_pawns(int pawn_array[board_size][board_size]) {
88 for (int i = 0; i < board_size; i++) {
89 for (int j = 0; j < board_size; j++) {
90 //mvprintw(i, j, "pawn[%d][%d] = %d\n", i, j, pawn_array[i][j]);
91 }
480acfeb
JB
92 }
93}