keep jumped pets
authorLaurent MAZET <laurent.mazet@thalesgroup.com>
Thu, 4 Jul 2024 15:29:04 +0000 (17:29 +0200)
committerLaurent MAZET <laurent.mazet@thalesgroup.com>
Thu, 4 Jul 2024 15:29:04 +0000 (17:29 +0200)
checkers.c
display.c
function.c
function.h

index 76b3ea03efee0ec030c82e7f8cc3395da93e7b8f..001c45367e847638998783b390a31d5b2226110d 100644 (file)
@@ -222,7 +222,9 @@ int main (int argc, char *argv[])
                 }
                 break;
             case 1:
-                mode = 0;
+                if (cache->board == NULL) {
+                    mode = 0;
+                }
                 break;
             }
             break;
@@ -341,6 +343,7 @@ int main (int argc, char *argv[])
             if (mode == 2) {
                 player = (player == 0) ? 1 : 0;
                 emptycache (cache);
+                cleanafterjump (board);
                 mode = 0;
             }
             break;
index 286e1147aa3502d66427eb5cf086ac06b4aae684..2954a42d453fafc367a55976cc81fe36ebe8ef90 100644 (file)
--- a/display.c
+++ b/display.c
@@ -127,6 +127,9 @@ void _set_symb_color (char symb)
     case '.':
         set_color (white);
         break;
+    case '/':
+        set_color (byellow);
+        break;
     case '0':
     case '6':
         set_color (wgreen);
@@ -164,6 +167,9 @@ void _element0 (board_t *board, int x, int y, int symb)
 {
     int element = ' ';
     switch (symb) {
+    case '/':
+        element = 'X';
+        break;
     case '0':
     case '1':
     case '2':
@@ -191,6 +197,10 @@ void _element1 (board_t *board, int x, int y, int symb)
     int element0 = ' ';
     int element1 = ' ';
     switch (symb) {
+    case '/':
+        element0 = '>';
+        element1 = '<';
+        break;
     case '0':
     case '1':
     case '2':
@@ -223,6 +233,12 @@ void _element2 (board_t *board, int x, int y, int symb)
     int element01 = ' ';
     int element11 = ' ';
     switch (symb) {
+    case '/':
+        element00 = '\\';
+        element01 = '/';
+        element10 = '/';
+        element11 = '\\';
+        break;
     case '0':
     case '1':
     case '2':
@@ -263,6 +279,14 @@ void _element3 (board_t *board, int x, int y, int symb)
     int element02 = ' ';
     int element12 = ' ';
     switch (symb) {
+    case '/':
+        element00 = '\\';
+        element01 = '|';
+        element02 = '/';
+        element10 = '/';
+        element11 = '|';
+        element12 = '\\';
+        break;
     case '0':
     case '1':
     case '2':
index 1bb7ceead15c5bf1635508291db5bbab0c875b86..75b353883dd94e22237a71e9fc3099c37153eaf2 100644 (file)
@@ -267,28 +267,28 @@ void dopetjump (board_t *board, int *x, int *y, int mode)
     switch (mode) {
     case 0:
         *getcell (board, *x, *y) = '.';
-        *getcell (board, *x + 1, *y - 1) = '.';
+        *getcell (board, *x + 1, *y - 1) = '/';
         *getcell (board, *x + 2, *y - 2) = symb;
         *x += 2;
         *y -= 2;
         break;
     case 1:
         *getcell (board, *x, *y) = '.';
-        *getcell (board, *x - 1, *y - 1) = '.';
+        *getcell (board, *x - 1, *y - 1) = '/';
         *getcell (board, *x - 2, *y - 2) = symb;
         *x -= 2;
         *y -= 2;
         break;
     case 2:
         *getcell (board, *x, *y) = '.';
-        *getcell (board, *x - 1, *y + 1) = '.';
+        *getcell (board, *x - 1, *y + 1) = '/';
         *getcell (board, *x - 2, *y + 2) = symb;
         *x -= 2;
         *y += 2;
         break;
     case 3:
         *getcell (board, *x, *y) = '.';
-        *getcell (board, *x + 1, *y + 1) = '.';
+        *getcell (board, *x + 1, *y + 1) = '/';
         *getcell (board, *x + 2, *y + 2) = symb;
         *x += 2;
         *y += 2;
@@ -327,6 +327,19 @@ void dopetmove (board_t *board, int *x, int *y, int mode)
     }
 }
 
+void cleanafterjump (board_t *board)
+{
+    int i, j;
+    for (i = 0; i < board->width; i++) {
+        for (j = 0; j < board->height; j++) {
+            char *cell = getcell (board, i, j);
+            if (*cell == '/') {
+                *cell = '.';
+            }
+        }
+    }
+}
+
 int testjump (board_t *board, int x, int y, int mode)
 {
     int ret = 0;
index 775d00867e14f418116b24be7708ee6332e7961e..74f2ff93e5054254a361edd29e526800510646dc 100644 (file)
@@ -45,6 +45,8 @@ void dopetjump (board_t *board, int *x, int *y, int mode);
 
 void dopetmove (board_t *board, int *x, int *y, int mode);
 
+void cleanafterjump (board_t *board);
+
 int testjump (board_t *board, int x, int y, int mode);
 
 int testalljumps (board_t *board, int x, int y);