snake moves
authorLaurent MAZET <laurent.mazet@thalesgroup.com>
Wed, 28 Aug 2024 15:43:38 +0000 (17:43 +0200)
committerLaurent MAZET <laurent.mazet@thalesgroup.com>
Wed, 28 Aug 2024 15:43:38 +0000 (17:43 +0200)
display.c
display.h
function.c
snake.c

index 6afa866e1a3aff4395807a9538db3e5b7b6eeb94..a846579799a8d048b689ac0ef7214afb6df35e71 100644 (file)
--- 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: */
index 4cd615a63111624b0dac89a63156d8cf9d894c30..b8cf627c7cbc24cc6d4b58bee8422767ae1cd9f0 100644 (file)
--- 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: */
index 7f9584628f30796d993b346292727d8ae56d7bdf..ac28ef0aa6d8f9bc89697e134cd53c707ddbab33 100644 (file)
@@ -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 d18c9a68555e0bac3ab77457dd37e47d06e64281..25dc5964df1e17516e29177dac5db19af8b47623 100644 (file)
--- 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)) {