From cf8f2573df9554c4766f79164bd87608cefdf325 Mon Sep 17 00:00:00 2001 From: Laurent MAZET Date: Wed, 28 Aug 2024 17:43:38 +0200 Subject: [PATCH] snake moves --- display.c | 39 +++++++++++++++------------------------ display.h | 2 ++ function.c | 8 ++++---- snake.c | 5 ++--- 4 files changed, 23 insertions(+), 31 deletions(-) diff --git a/display.c b/display.c index 6afa866..a846579 100644 --- a/display.c +++ b/display.c @@ -73,29 +73,20 @@ void _put_color_block (int y, int x, char symb) mvaddcb (y, x, black); break; case '1': - mvaddcb (y, x, cyan); + mvaddcb (y, x, gray); break; case '2': - mvaddcb (y, x, yellow); + mvaddcb (y, x, green); break; case '3': - mvaddcb (y, x, magenta); + mvaddcb (y, x, darkgreen); break; case '4': - mvaddcb (y, x, brown); + mvaddcb (y, x, yellow); break; case '5': - mvaddcb (y, x, blue); - break; - case '6': mvaddcb (y, x, red); break; - case '7': - mvaddcb (y, x, green); - break; - case '8': - mvaddcb (y, x, white); - break; } } @@ -161,17 +152,6 @@ void boardwindow (board_t *board, int mode) } } -void displaysnake (board_t *board, snake_t *snake) -{ - int i; - - int color = green; - for (i = 0; i < snake->length; i++) { - _element (board, snake->x[i], snake->y[i], color); - color = darkgreen; - } -} - char *savewindow (int length, int xoffset, int yoffset) { char *name = (char *) calloc (1, length + 1); @@ -258,4 +238,15 @@ void msgwindow (char *msg, int xoffset, int yoffset, int length) setcolor (black_gray); } +void displaysnake (board_t *board, snake_t *snake) +{ + int i; + + char symb = '2'; + for (i = 0; i < snake->length; i++) { + _element (board, snake->x[i], snake->y[i], symb); + symb = '3'; + } +} + /* vim: set ts=4 sw=4 et: */ diff --git a/display.h b/display.h index 4cd615a..b8cf627 100644 --- a/display.h +++ b/display.h @@ -34,6 +34,8 @@ char *savewindow (int length, int xoffset, int yoffset); void msgwindow (char *msg, int xoffset, int yoffset, int length); +void displaysnake (board_t *board, snake_t *snake); + #endif /* __DISPLAY_H__ */ /* vim: set ts=4 sw=4 et: */ diff --git a/function.c b/function.c index 7f95846..ac28ef0 100644 --- a/function.c +++ b/function.c @@ -279,7 +279,7 @@ int movesnake (board_t *board, snake_t *snake, int dir) char *cell = getcell (board, x, y); switch (*cell) { - case '6': /* decrease size */ + case '5': /* decrease size */ if (snake->length > 2) { snake->length--; snake->x[snake->length] = 0; @@ -287,13 +287,13 @@ int movesnake (board_t *board, snake_t *snake, int dir) } /* fall through */ case ' ': /* only forward */ - for (i = snake->length - 1; i > 0; i++) { + for (i = snake->length - 1; i > 0; i--) { snake->x[i] = snake->x[i - 1]; snake->y[i] = snake->y[i - 1]; } break; - case '5': /* increase size */ - for (i = snake->length - 1; i >= 0; i++) { + case '4': /* increase size */ + for (i = snake->length - 1; i >= 0; i--) { snake->x[i + 1] = snake->x[i]; snake->y[i + 1] = snake->y[i]; } diff --git a/snake.c b/snake.c index d18c9a6..25dc596 100644 --- a/snake.c +++ b/snake.c @@ -110,6 +110,7 @@ int main (int argc, char *argv[]) keypad (stdscr, TRUE); curs_set (0); start_color (); + halfdelay (1); /* load playground */ int w0board = COLS - strmaxlen (help, '\n') - 2 * (xoffset + 1); @@ -124,8 +125,6 @@ int main (int argc, char *argv[]) int yscore = yboard - 1; int xhelp = xscore; int yhelp = yscore + 3 + xoffset; - int xcursor = board->width / 2; - int ycursor = board->height / 2; int xsave = max (xboard + (board->xsize - savelen) / 2, 1); int ysave = yboard + (board->ysize - 1) / 2; char *savename = NULL; @@ -141,12 +140,12 @@ int main (int argc, char *argv[]) /* main loop */ int stop = 0; int mode = 0; - int dir = 3; timeval_t turn = {0, 0}; int speed = 3000; while (!stop) { boardwindow (board, 1); + displaysnake (board, snake); if (isovertime (&turn)) { setendtime (&turn, speed); if (!movesnake (board, snake, snake->dir)) { -- 2.30.2