From 86d836ac6ef03599a25649874f6edc5feaeb362d Mon Sep 17 00:00:00 2001 From: Laurent Mazet Date: Sat, 29 Jun 2024 07:55:33 +0200 Subject: [PATCH] all scales implemented --- display.c | 235 ++++++++++++++++++++++++++++++++++++++++++++++-------- todo.txt | 6 +- 2 files changed, 204 insertions(+), 37 deletions(-) diff --git a/display.c b/display.c index 7b097b0..f6a99e1 100644 --- a/display.c +++ b/display.c @@ -118,45 +118,212 @@ int helpwindow (char *msg, int xoffset, int yoffset) return j; } -void _element (board_t *board, int x, int y, int symb) +void _element0 (board_t *board, int x, int y, int symb) { int element = ' '; - switch (board->scale) { - case 0: + switch (symb) { + case 'F': + case 'H': + case 'X': + element = ACS_DIAMOND; + break; + } + set_color (black); + switch (symb) { + case 'C': + set_color (bgreen); + break; + case 'F': + set_color (wgreen); + break; + case 'H': + set_color (red); + break; + case 'P': + set_color (byellow); + break; + case 'O': + set_color (white); + break; + case 'X': + set_color (white); + break; + case 'Z': + set_color (bblue); + break; + case ' ': set_color (black); - switch (symb) { - case 'C': - set_color (bgreen); - break; - case 'F': - element = ACS_DIAMOND; - set_color (wgreen); - break; - case 'H': - element = ACS_DIAMOND; - set_color (red); - break; - case 'P': - element = ACS_DIAMOND; - set_color (byellow); - break; - case 'O': - set_color (white); - break; - case 'X': - set_color (white); - element = ACS_DIAMOND; - break; - case 'Z': - set_color (bblue); - break; - case ' ': - set_color (black); - break; - } - mvaddch (board->yoffset + y, board->xoffset + x, element); + break; + } + mvaddch (board->yoffset + y, board->xoffset + x, element); + set_color (white); +} + +void _element1 (board_t *board, int x, int y, int symb) +{ + int element0 = ' '; + int element1 = ' '; + switch (symb) { + case 'F': + case 'H': + case 'X': + element0 = ACS_LARROW; + element1 = ACS_RARROW; + break; + } + set_color (black); + switch (symb) { + case 'C': + set_color (bgreen); + break; + case 'F': + set_color (wgreen); + break; + case 'H': + set_color (red); + break; + case 'P': + set_color (byellow); + break; + case 'O': + set_color (white); + break; + case 'X': + set_color (white); + break; + case 'Z': + set_color (bblue); + break; + case ' ': + set_color (black); + break; + } + mvaddch (board->yoffset + y, board->xoffset + 2 * x, element0); + mvaddch (board->yoffset + y, board->xoffset + 2 * x + 1, element1); + set_color (white); +} + +void _element2 (board_t *board, int x, int y, int symb) +{ + int element00 = ' '; + int element10 = ' '; + int element01 = ' '; + int element11 = ' '; + switch (symb) { + case 'F': + case 'H': + case 'X': + element00 = ACS_ULCORNER; + element01 = ACS_URCORNER; + element10 = ACS_LLCORNER; + element11 = ACS_LRCORNER; + break; + } + set_color (black); + switch (symb) { + case 'C': + set_color (bgreen); + break; + case 'F': + set_color (wgreen); + break; + case 'H': + set_color (red); + break; + case 'P': + set_color (byellow); + break; + case 'O': + set_color (white); + break; + case 'X': set_color (white); break; + case 'Z': + set_color (bblue); + break; + case ' ': + set_color (black); + break; + } + mvaddch (board->yoffset + 2 * y, board->xoffset + 2 * x, element00); + mvaddch (board->yoffset + 2 * y, board->xoffset + 2 * x + 1, element01); + mvaddch (board->yoffset + 2 * y + 1, board->xoffset + 2 * x, element10); + mvaddch (board->yoffset + 2 * y + 1, board->xoffset + 2 * x + 1, element11); + set_color (white); +} + +void _element3 (board_t *board, int x, int y, int symb) +{ + int element00 = ' '; + int element10 = ' '; + int element01 = ' '; + int element11 = ' '; + int element02 = ' '; + int element12 = ' '; + switch (symb) { + case 'F': + case 'H': + case 'X': + element00 = ACS_ULCORNER; + element01 = ACS_HLINE; + element02 = ACS_URCORNER; + element10 = ACS_LLCORNER; + element11 = ACS_HLINE; + element12 = ACS_LRCORNER; + break; + } + set_color (black); + switch (symb) { + case 'C': + set_color (bgreen); + break; + case 'F': + set_color (wgreen); + break; + case 'H': + set_color (red); + break; + case 'P': + set_color (byellow); + break; + case 'O': + set_color (white); + break; + case 'X': + set_color (white); + break; + case 'Z': + set_color (bblue); + break; + case ' ': + set_color (black); + break; + } + mvaddch (board->yoffset + 2 * y, board->xoffset + 3 * x, element00); + mvaddch (board->yoffset + 2 * y, board->xoffset + 3 * x + 1, element01); + mvaddch (board->yoffset + 2 * y, board->xoffset + 3 * x + 2, element02); + mvaddch (board->yoffset + 2 * y + 1, board->xoffset + 3 * x, element10); + mvaddch (board->yoffset + 2 * y + 1, board->xoffset + 3 * x + 1, element11); + mvaddch (board->yoffset + 2 * y + 1, board->xoffset + 3 * x + 2, element12); + set_color (white); +} + +void _element (board_t *board, int x, int y, int symb) +{ + switch (board->scale) { + case 0: + _element0 (board, x, y, symb); + break; + case 1: + _element1 (board, x, y, symb); + break; + case 2: + _element2 (board, x, y, symb); + break; + case 3: + _element3 (board, x, y, symb); + break; } } diff --git a/todo.txt b/todo.txt index 7fd68a9..755c8cc 100644 --- a/todo.txt +++ b/todo.txt @@ -3,6 +3,6 @@ - trace de la fenetre de sauvegarde - info de fin de partie - marche arriere -- board 1x2 -- board 2x2 -- board 2x3 += board 1x2 += board 2x2 += board 2x3 -- 2.30.2