diff --git a/README.md b/README.md new file mode 100644 index 0000000..893187c --- /dev/null +++ b/README.md @@ -0,0 +1,10 @@ +# Conway's Game Of Life + +An implementation in C. + +Usage: ./life [GRID SIZE=20] [WAIT BETWEEN EACH STEP=4] [MAX STEP=-1] + +WAIT is written as 1e6 / WAIT, which we wait as a fraction of a second. + +I will one day write a good frontend for the CLI, along with proper +logging, and readin and readout of RLE, and maybe more. diff --git a/life.c b/life.c index eb84346..35ed216 100644 --- a/life.c +++ b/life.c @@ -9,6 +9,25 @@ #include #include +/* defaults */ + +#define DEFAULT_GRID_SIZE "20" +#define DEFAULT_WAIT 4 +#define DEFAULT_MAX_STEP -1 + +/* symbols used */ + +char symbol [] = " O."; + +/* ... */ + +/* maps to symbol */ +enum { + LIFE_NONE, + LIFE_ALIVE, + LIFE_DEAD +}; + #define DELC static inline /* nearness mask, life mask */ @@ -17,14 +36,6 @@ /* life nearness function */ #define life_near life_near_lim -enum { - LIFE_NONE, - LIFE_ALIVE, - LIFE_DEAD -}; - -char symbol [] = " O."; - /* tty */ #define CSI "\033[" @@ -229,18 +240,19 @@ int main (int argc, char ** argv) { if ( argc >= 2 && (strcmp (argv [1], "-h") == 0 || strcmp (argv [1], "--help") == 0)) { - printf ("%s [GRID SIZE] [WAIT BETWEEN EACH STEP=4] [MAX STEP=-1]\n", argv [0]); + printf ("%s [GRID SIZE=%s] [WAIT BETWEEN EACH STEP=%d] [MAX STEP=-%d]\n", + argv [0], DEFAULT_GRID_SIZE, DEFAULT_WAIT, DEFAULT_MAX_STEP); return 1; } - char * rect = argc >= 2 ? argv [1] : "20"; + char * rect = argc >= 2 ? argv [1] : DEFAULT_GRID_SIZE; board_t * b = board_alloc_text (rect); board_randomize (b, 5); board_eq_filter (b, 1); - int wait = argc >= 3 ? atoi (argv [2]) : 4; - int step = argc >= 4 ? atoi (argv [3]) : -1; + int wait = argc >= 3 ? atoi (argv [2]) : DEFAULT_WAIT; + int step = argc >= 4 ? atoi (argv [3]) : DEFAULT_MAX_STEP; #ifndef NDEBUG life_debug_near (b, 0, 0);