From 7820aa9a5fc0578ecb139d99c68861b90b5f2aa5 Mon Sep 17 00:00:00 2001
From: KosmX <kosmx.mc@gmail.com>
Date: Tue, 24 Nov 2020 15:23:26 +0100
Subject: [PATCH] bit rework

---
 snake.c           | 179 +++++++++++++++++++++-------------------------
 structs.h         |  12 +++-
 tests/getchtest   | Bin 0 -> 20184 bytes
 tests/getchtest.c |  29 ++++++++
 xperiments.exe    | Bin 75830 -> 0 bytes
 5 files changed, 120 insertions(+), 100 deletions(-)
 create mode 100755 tests/getchtest
 create mode 100644 tests/getchtest.c
 delete mode 100644 xperiments.exe

diff --git a/snake.c b/snake.c
index 334a88e..31802d4 100644
--- a/snake.c
+++ b/snake.c
@@ -3,6 +3,7 @@
 #include<string.h>
 #include<locale.h>
 #include<ctype.h>
+#include<time.h>
 
 #include "structs.h"
 #include "multiplatformLib.h"
@@ -125,8 +126,9 @@ int readFile(FILE *file, Matrix *matrix){
             return EOF-1;
         }
         for(int n = 0; n < lineCount; n++){
+            matrix->matrix[i][n].isFood = 0; //That is NOT food
             for(int a = 0; a < 2; a++){
-                matrix->matrix[i][n].chars[a].bytes.c[0] = ' ';
+                matrix->matrix[i][n].data.chars[a].bytes.c[0] = ' ';
             }
         }
     }
@@ -143,7 +145,7 @@ int readFile(FILE *file, Matrix *matrix){
         }
         else{
             for(int charPos = 0; charPos < 4; charPos++){
-                matrix->matrix[pos.x/2][pos.y].chars[pos.x%2].bytes.c[charPos] = current->value.bytes.c[charPos];
+                matrix->matrix[pos.x/2][pos.y].data.chars[pos.x%2].bytes.c[charPos] = current->value.bytes.c[charPos];
             }
             pos.x++; 
         }
@@ -170,12 +172,20 @@ void printChunk(chunk ch, Pos pos, screenData *scrDat){
     if(pos.x < 0 || pos.y < 0 || pos.x >= scrDat->size.x || pos.y >= scrDat->size.y){
         return; //if pos is not on the screen, just do nothing.
     }
-    printf("\e[%d;%dH", pos.y, pos.x *2);
+    printf("\e[%d;%dH", pos.y+1, pos.x *2+1);
     for(int i = 0; i < 2; i++){
-        printChar(ch.chars[i]);
+        printChar(ch.data.chars[i]);
     }
+    #ifdef DEBUG
+    printf("\e[0;0H\n"); //to update terminal after EVERY print but drasticlally slowing it down
+    #endif
 }
 
+/**Print characters to a map pos
+ * 
+ * It will check if the character is on the screen
+ * 
+ */
 void print(chunk ch, Pos pos, screenData *scrDat, int width, int height){
     pos.x = pos.x - scrDat->pos.x;
     if(pos.x < 0){
@@ -198,6 +208,10 @@ void print(chunk ch, Pos pos, screenData *scrDat, int width, int height){
     printChunk(ch, pos, scrDat);
 }
 
+void printSnakeChunk(snakeChain *snake){
+    //TODO
+}
+
 int updateScreenSize(Matrix *map, screenData *scrDat){
     struct Vec2i size = getWindowSize();
     size.x = size.x / 2;
@@ -215,7 +229,7 @@ int updateScreenSize(Matrix *map, screenData *scrDat){
 }
 
 //Update screen if required 
-void updateScreen(Matrix *map, screenData *scrDat, snakeChain *head, Direction d, Food *food){
+void updateScreen(Matrix *map, screenData *scrDat, snakeChain *head, Direction d){
     int do_update;
     do_update = updateScreenSize(map, scrDat);
 
@@ -271,25 +285,15 @@ void updateScreen(Matrix *map, screenData *scrDat, snakeChain *head, Direction d
     if(do_update){
         Pos pos;
         for (pos.y = scrDat->pos.y; pos.y < scrDat->pos.y + scrDat->size.y; pos.y++){
-            printf("\e[0;%dH\e[K", pos.y - scrDat->pos.y); //Clear the screen line
+            printf("\e[%d;0H\e[K", pos.y - scrDat->pos.y + 1); //Clear the screen line
+            if(pos.y >= map->height && !scrDat->isYRepeat){
+                break;
+            }
             for (pos.x = scrDat->pos.x; pos.x < scrDat->pos.x + scrDat->size.x; pos.x++){
                 if(pos.x < map->width || scrDat->isXRepeat){
                     print(map->matrix[pos.x%map->width][pos.y%map->height], pos, scrDat, map->width, map->height);
                 }
             }
-            if(pos.y >= map->height && !scrDat->isYRepeat){
-                break;
-            }
-        }
-        while(food->next->next != NULL){
-            chunk c;
-            food = food->next;
-            //c.chars[0].bytes.c[0] = 'X';
-            c.chars[0].bytes.c[0] = 'X';
-            c.chars[0].bytes.c[0] = 'X';
-            printf(green);
-            printChunk(c, food->pos, scrDat);
-            printf("\e[0m");
         }
     }
 }
@@ -341,68 +345,54 @@ void getControl(screenData *scrDat, Direction *direction){
     }
 }
 
+int isNotWall(chunk c){
+    return c.isFood || (c.data.chars[0].bytes.c[0] == ' ' && c.data.chars[1].bytes.c[0] == ' ');
+}
+
 int isAir(chunk c){
-    return c.chars[0].bytes.c[0] == ' ' && c.chars[1].bytes.c[0] == ' ';
+    return !c.isFood && isNotWall(c);
 }
 
-void updateFood(Matrix *map, int *foodTick, int feedAmount, Food *firstFood, snakeChain *firstSnake, screenData *scrDat){
+void updateFood(Matrix *map, int *foodTick, int feedAmount, snakeChain *firstSnake, screenData *scrDat){
     if((*foodTick)++ > feedAmount){
         for(int i = 0; i < 128; i++){
             Pos pos;
             int isFree = 1;
-            Food *food = firstFood;
             snakeChain *snake = firstSnake;
             pos.x = rand()%map->width;
             pos.y = rand()%map->height;
 
-            if(!isAir(map->matrix[pos.x][pos.y])){
-                continue;
-            }
-            while (food->next->next != NULL)
-            {
-                food = food->next;
-                if(food->pos.x == pos.x && food->pos.y == pos.y){
-                    isFree = false;
-                    break;
+            if(isAir(map->matrix[pos.x][pos.y])){
+                while(snake != NULL){
+                    if(snake->pos.x == pos.x && snake->pos.y == pos.y){
+                        isFree = false;
+                        break;
+                    }
+                    snake = snake->next;
                 }
-            }
-            if(!isFree){
-                continue;
-            }
-            while(snake != NULL){
-                if(snake->pos.x == pos.x && snake->pos.y == pos.y){
-                    isFree = false;
-                    break;
+                if(!isFree){
+                    continue;
                 }
-                snake = snake->next;
-            }
-            if(!isFree){
-                continue;
-            }
-            //pos is available
-            {
-                
-                *foodTick = 0;
-                Food *new = malloc(sizeof(Food));
-                if(new != NULL){
+                //pos is available
+                {
+                    *foodTick = 0;
                     chunk c;
-                    new->next = food->next;
-                    food->next = new;
-                    new->pos = pos;
-                    c.chars[0].bytes.c[0] = 'X';
-                    c.chars[0].bytes.c[0] = 'X';
+                    map->matrix[pos.x][pos.y].isFood = 1;
+                    map->matrix[pos.x][pos.y].data.FRand = rand();
+                    c.data.chars[0].bytes.c[0] = 'X';
+                    c.data.chars[0].bytes.c[0] = 'X';
                     printf(green);
                     print(c, pos, scrDat, map->width, map->height);
                     printf("\e[0m");
+                    break;
                 }
-                break;
             }
         }
     }
 }
 
 //EOF fatal error, 1 game over
-int updateSnake(Matrix *map, screenData *scrDat, Direction d, snakeChain *head, Food *food, int canBite){
+int updateSnake(Matrix *map, screenData *scrDat, Direction d, snakeChain *head, int canBite){
     Pos pos = head->pos;
     switch (d)
     {
@@ -441,20 +431,10 @@ int updateSnake(Matrix *map, screenData *scrDat, Direction d, snakeChain *head,
         }
     }
     
-    if(isAir(map->matrix[pos.x][pos.y])){
-        int isFood = 0;
+    if(isNotWall(map->matrix[pos.x][pos.y])){
+        int isFood = map->matrix[pos.x][pos.y].isFood;
         snakeChain *snake = head;
         Pos tmp_pos1 = head->pos, tmp_pos2;
-        while(food->next->next != NULL){
-            if(food->next->pos.x == pos.x && food->next->pos.y == pos.y){
-                Food *current = food->next;
-                isFood = true;
-                food->next = food->next->next;
-                free(current); //Snake ate this food. It is safe to free;
-                break;
-            }
-            food = food->next;
-        }
         while (snake->next != 0)
         {
             snake = snake->next;
@@ -487,8 +467,8 @@ int updateSnake(Matrix *map, screenData *scrDat, Direction d, snakeChain *head,
             snake->pos = tmp_pos1;
             tmp_pos1 = tmp_pos2;
 
-            c.chars[0].bytes.c[0] = '>';
-            c.chars[0].bytes.c[0] = '<';            
+            c.data.chars[0].bytes.c[0] = '>';
+            c.data.chars[0].bytes.c[0] = '<';            
             if(snake->next == NULL && isFood){
                 isFood = false;
                 snake->next = malloc(sizeof(snake));
@@ -509,13 +489,13 @@ int updateSnake(Matrix *map, screenData *scrDat, Direction d, snakeChain *head,
         }
         if(tmp_pos2.x != -1){
             chunk c; 
-            c.chars[0].bytes.c[0] = ' ';
-            c.chars[0].bytes.c[0] = ' ';
+            c.data.chars[0].bytes.c[0] = ' ';
+            c.data.chars[0].bytes.c[0] = ' ';
             print(c, tmp_pos2, scrDat, map->width, map->height); //set this to air.
         }
         chunk c;
-        c.chars[0].bytes.c[0] = '(';
-        c.chars[0].bytes.c[0] = ')';
+        c.data.chars[0].bytes.c[0] = '(';
+        c.data.chars[0].bytes.c[0] = ')';
         printf(blue);
         print(c, head->pos, scrDat, map->width, map->height); //TODO direction snake
         printf("\e[0m");
@@ -587,44 +567,40 @@ int loadConfig(int *tickSpeed, int *repeatMap, int *feedAmount, int *canBite){
 //update display
 //update food state
 //step snake
-int tick(Matrix *map, screenData *scrDat, snakeChain *snake, Direction *d, Food *food, int feedAmount, int canBite){
+int tick(Matrix *map, screenData *scrDat, snakeChain *snake, Direction *d, int feedAmount, int canBite){
     static int foodTick = 0;
     getControl(scrDat, d);
     if(scrDat->commands[0] != NONE){
         *d = scrDat->commands[0];
     }
-    updateScreen(map, scrDat, snake, *d, food);
-    if(d == NONE){
+    updateScreen(map, scrDat, snake, *d);
+    if(*d == NONE){
         chunk c;
-        c.chars[0].bytes.c[0] = '(';
-        c.chars[0].bytes.c[0] = ')';
+        c.data.chars[0].bytes.c[0] = '(';
+        c.data.chars[0].bytes.c[0] = ')';
         printf(blue);
         print(c, snake->pos, scrDat, map->width, map->height);
         printf("\e[0m");
         return 0; // waiting for user input.
     }
-    updateFood(map, &foodTick, feedAmount, food, snake, scrDat);
-    updateSnake(map, scrDat, *d, snake, food, canBite);
+    updateFood(map, &foodTick, feedAmount, snake, scrDat);
+    updateSnake(map, scrDat, *d, snake, canBite);
+    //printf("\e[0;0H\n"); //Update the terminal (mostly on Unix based systems)
+    fflush(stdout);
     return 0;
 }
 
 int loop(Matrix *matrix, int tickspeed, int repeatMap, int feedAmount, int canBite){
 
-    Direction d = DOWN;
+    Direction d = NONE; //Init with none
     screenData scrDat;
     snakeChain snake, *chain;
-    Food food;
-    food.next = malloc(sizeof(Food));
-    if(food.next == NULL){
-        return -1;
-    }
-    food.next->next = NULL; //Create food guards.
 
     while(true){
         Pos p;
         p.x = rand()%matrix->width;
         p.y = rand()&matrix->height;
-        if(isAir(matrix->matrix[p.x][p.y])){
+        if(isNotWall(matrix->matrix[p.x][p.y])){
             snake.pos = p;
             break;
         }
@@ -646,8 +622,10 @@ int loop(Matrix *matrix, int tickspeed, int repeatMap, int feedAmount, int canBi
     scrDat.size.x = 0;
     scrDat.size.y = 0;
     scrDat.repeatMap = repeatMap;
+    scrDat.commands[0] = NONE;
+    scrDat.commands[1] = NONE;
     while(42){
-        if(tick(matrix, &scrDat, &snake, &d, &food, feedAmount, canBite)){
+        if(tick(matrix, &scrDat, &snake, &d, feedAmount, canBite)){
             break;
         }
         unisleep(tickspeed); //Special sleep to work both in windows and unix environment
@@ -661,7 +639,8 @@ void _testprint(Matrix *map){
         for(int x = 0; x < map->width; x++){
             for(int i = 0; i < 2; i++){
                 //printf("%c", map->matrix[x][y].chars->bytes.c[i * 4]); //WTF... I didn't indexed correctly, but accidentaly I've got the right value...
-                printChar(map->matrix[x][y].chars[i]);
+                printChar(map->matrix[x][y].data.chars[i]);
+                //unisleep(1000);
             }
             //printf("|");
         }
@@ -675,12 +654,12 @@ void _print1char(Matrix *map){
         if(x >= 0 && y >= 0 && x < map->width && y < map->height){
             for(int i = 0;i < 2; i++){
                 printf("\nvalue: %hx, %hx, %hx, %hx\n",
-                (unsigned)map->matrix[x][y].chars[i].bytes.c[0],
-                (unsigned)map->matrix[x][y].chars[i].bytes.c[1],
-                (unsigned)map->matrix[x][y].chars[i].bytes.c[2],
-                (unsigned)map->matrix[x][y].chars[i].bytes.c[3]);
+                (unsigned)map->matrix[x][y].data.chars[i].bytes.c[0],
+                (unsigned)map->matrix[x][y].data.chars[i].bytes.c[1],
+                (unsigned)map->matrix[x][y].data.chars[i].bytes.c[2],
+                (unsigned)map->matrix[x][y].data.chars[i].bytes.c[3]);
                 printf("as character: \"");
-                printChar(map->matrix[x][y].chars[i]);
+                printChar(map->matrix[x][y].data.chars[i]);
                 printf("\"\n");
             }
         }
@@ -697,6 +676,8 @@ int core(int argc, char const *argv[])
 
     initMultiplatform(); // init stuff.
 
+    srand(time(0)); // bee a bit more random
+
     int tickspeed = 100, repeatMap = 0, feedAmount = 20, canBite = true; // if no config, default value
 
     //----load config----
@@ -759,6 +740,7 @@ int main(int argc, char const *argv[])
 int main(int argc, char const *argv[])
 {
     //2 + 3;  //... this does nothing...
+    #ifdef DEBUG
     int ret;
     char const *array[] = {argv[0], "map1.txt"};
     ret = core(2, array);
@@ -767,4 +749,7 @@ int main(int argc, char const *argv[])
     //return 0, ret; //Miért van ez a függvény tele szeméttel??? pl 0, smt...
 
     return ret; // így szép.
+    #else
+    return core(argc, argv);
+    #endif
 }
\ No newline at end of file
diff --git a/structs.h b/structs.h
index 261bc1b..ce24712 100644
--- a/structs.h
+++ b/structs.h
@@ -31,7 +31,13 @@ typedef union unichar{
 }unichar;
 typedef struct chunk  //struct stores 2 chars and it's color :D
 {
-    unichar chars[2];
+    int isFood :1;
+    union
+    {
+        unichar chars[2];
+        int FRand;
+    }data;
+    
     /*
     struct{
         int fg : 3; //3 bit color codes.
@@ -56,11 +62,11 @@ typedef struct chunkMatrix{
     int height;
 }Matrix;
 
-typedef struct Food{
+/*typedef struct Food{
     Pos pos;
     int rand;
     struct Food *next;
-}Food;
+}Food;*/
 
 typedef struct screenData{
     Pos pos;
diff --git a/tests/getchtest b/tests/getchtest
new file mode 100755
index 0000000000000000000000000000000000000000..8847179621ab0587769a6822d90a5daa8013cea4
GIT binary patch
literal 20184
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

literal 0
HcmV?d00001

diff --git a/tests/getchtest.c b/tests/getchtest.c
new file mode 100644
index 0000000..44c0403
--- /dev/null
+++ b/tests/getchtest.c
@@ -0,0 +1,29 @@
+
+#include<stdio.h>
+#include<termios.h>
+#include<unistd.h>
+
+int main(int argc, char const *argv[])
+{
+
+    struct termios info;          // This is from stackoverflow
+    tcgetattr(0, &info);          /* get current terminal attirbutes; 0 is the file descriptor for stdin */
+    info.c_lflag &= ~ICANON;      /* disable canonical mode */
+    info.c_cc[VMIN] = 0;          /* don't wait for keypress, return EOF instead */
+    info.c_cc[VTIME] = 0;         /* no timeout */
+    tcsetattr(0, TCSANOW, &info); /* set immediately */
+
+    int c = 0;
+
+    sleep(1);
+    c = getchar();
+    printf("\nint: %d\nchar: %c\n", c, c);
+
+    sleep(5);
+    c = 0;
+    while(c != -1){
+        c = getchar();
+        printf("\nint: %d\nchar: %c\n", c, c);
+    }
+    return 0;
+}
diff --git a/xperiments.exe b/xperiments.exe
deleted file mode 100644
index f0fdab5db041fca0420a901d4f88436f2935bb97..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 75830
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
N1X@die2<d*7yvDC`6vJY

-- 
GitLab