From 4a52c4e66c45637824aab96329cf4003ec0eb171 Mon Sep 17 00:00:00 2001 From: Laurent MAZET Date: Thu, 4 Jul 2024 17:29:04 +0200 Subject: [PATCH] keep jumped pets --- checkers.c | 5 ++++- display.c | 24 ++++++++++++++++++++++++ function.c | 21 +++++++++++++++++---- function.h | 2 ++ 4 files changed, 47 insertions(+), 5 deletions(-) diff --git a/checkers.c b/checkers.c index 76b3ea0..001c453 100644 --- a/checkers.c +++ b/checkers.c @@ -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; diff --git a/display.c b/display.c index 286e114..2954a42 100644 --- 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': diff --git a/function.c b/function.c index 1bb7cee..75b3538 100644 --- a/function.c +++ b/function.c @@ -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; diff --git a/function.h b/function.h index 775d008..74f2ff9 100644 --- a/function.h +++ b/function.h @@ -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); -- 2.30.2