]> wirehaze git hosting - lifeboot.git/blobdiff - prototype.c

wirehaze git hosting

update INIT_RATIO
[lifeboot.git] / prototype.c
index 5c6f052c91c37438d619d201c035459eb466cd19..c9c2afa8796467d30fceb93c72d64b402d1c2e06 100644 (file)
@@ -10,7 +10,7 @@
 #define DEAD ' '
 #define ALIVE '#'
 
 #define DEAD ' '
 #define ALIVE '#'
 
-#define INIT_RATIO 10
+#define INIT_RATIO 4
 
 #define STR(x) _STR(x)
 #define _STR(x) #x
 
 #define STR(x) _STR(x)
 #define _STR(x) #x
@@ -37,22 +37,24 @@ static void init_grid(char grid[COLS * ROWS]) {
   }
 }
 
   }
 }
 
-static char get_state(char grid[COLS * ROWS], int idx) {
-  if (idx < 0 || idx >= COLS * ROWS)
+static char get_state(char grid[COLS * ROWS], int row, int col) {
+  if (row < 0 || row >= ROWS || col < 0 || col >= COLS)
     return DEAD;
 
     return DEAD;
 
-  return grid[idx];
+  return grid[row * COLS + col];
 }
 
 static int alive_neighbours(char grid[COLS * ROWS], int idx) {
 }
 
 static int alive_neighbours(char grid[COLS * ROWS], int idx) {
+  int row = idx / COLS;
+  int col = idx % COLS;
   int neighbours = 0;
 
   int neighbours = 0;
 
-  for (int i = -1; i <= 1; i++) /* row */
-    for (int j = -1; j <= 1; j++) /* col */
-      if (get_state(grid, idx + i * COLS + j) == ALIVE)
+  for (int i = -1; i <= 1; i++)
+    for (int j = -1; j <= 1; j++)
+      if (get_state(grid, row + i, col + j) == ALIVE)
         neighbours++;
 
         neighbours++;
 
-  if (get_state(grid, idx) == ALIVE)
+  if (get_state(grid, row, col) == ALIVE)
     neighbours--;
 
   return neighbours;
     neighbours--;
 
   return neighbours;
@@ -61,7 +63,7 @@ static int alive_neighbours(char grid[COLS * ROWS], int idx) {
 static char next_state(char grid[COLS * ROWS], int idx) {
   int n = alive_neighbours(grid, idx);
 
 static char next_state(char grid[COLS * ROWS], int idx) {
   int n = alive_neighbours(grid, idx);
 
-  if (get_state(grid, idx) == ALIVE) {
+  if (get_state(grid, idx / COLS, idx % COLS) == ALIVE) {
     if (n < 2 || n > 3)
       return DEAD;
 
     if (n < 2 || n > 3)
       return DEAD;
 
@@ -89,12 +91,11 @@ int main () {
   srand(time(0));
   init_grid(grid);
 
   srand(time(0));
   init_grid(grid);
 
-  for (;;) {
+  do {
     clearscr();
     print_grid(grid);
     update_grid(grid);
     clearscr();
     print_grid(grid);
     update_grid(grid);
-    getchar();
-  }
+  } while (getchar() != 'q');
 
   return 0;
 }
 
   return 0;
 }