all scales implemented
authorLaurent Mazet <mazet@softndesign.org>
Sat, 29 Jun 2024 05:55:33 +0000 (07:55 +0200)
committerLaurent Mazet <mazet@softndesign.org>
Sat, 29 Jun 2024 05:55:33 +0000 (07:55 +0200)
display.c
todo.txt

index 7b097b0e9d11d03f5934a218da9786c39e999014..f6a99e1483084cb26a9e6058d77b76bf535b23c3 100644 (file)
--- 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;
     }
 }
 
index 7fd68a9d3067c0da60762f766b0b4899812aaad4..755c8ccb152835b408482cf2b753364974d3b378 100644 (file)
--- 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