From eb86b65896775716a0be12d9ff234332c9ec864c Mon Sep 17 00:00:00 2001 From: Laurent MAZET Date: Tue, 25 Jun 2024 22:16:51 +0200 Subject: [PATCH] second code for library management --- gameoflife.c | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/gameoflife.c b/gameoflife.c index 9882aa9..7452e6e 100644 --- a/gameoflife.c +++ b/gameoflife.c @@ -90,9 +90,10 @@ library_t *processlibrary (char *libname) library_t *lib = (library_t *) malloc ((n + 2) * sizeof (library_t)); CHECKALLOC (lib); - (lib + n)->board = initboard (1, 1); - (lib + n)->board->tab[0] = 'X'; + (lib + n)->board = initboard (3, 3); + (lib + n)->board->tab[4] = 'X'; (lib + n)->name = strdup ("Cell"); + memset (lib + n + 1, 0, sizeof (library_t)); n++; if (libname) { @@ -100,17 +101,17 @@ library_t *processlibrary (char *libname) char *filename = strtok_r (libname, ":", &saveptr); while (filename) { char *name; - n++; lib = (library_t *) realloc (lib, (n + 2) * sizeof (library_t)); CHECKALLOC (lib); (lib + n)->board = processfile (filename, &name); if ((lib + n)->board != NULL) { (lib + n)->name = name; + memset (lib + n + 1, 0, sizeof (library_t)); n++; } - filename = strtok_r (NULL, "\n", &saveptr); + filename = strtok_r (NULL, ":", &saveptr); } } @@ -202,7 +203,8 @@ int main (int argc, char *argv[]) /* load library */ library_t *lib = processlibrary (listoffilename); - board_t *element = (lib + 0)->board; + int n = 0; + board_t *element = (lib + n)->board; /* load playground */ board_t *playground = NULL; @@ -309,6 +311,13 @@ int main (int argc, char *argv[]) case 'l': xelement = (xelement + 1) % board->xsize; break; + case 'o': + n++; + if ((lib + n)->board == NULL) { + n = 0; + } + element = (lib + n)->board; + break; case KEY_ESC: case 'q': stop = 1; @@ -323,6 +332,16 @@ int main (int argc, char *argv[]) } free (ptr); break; + case 'u': + n--; + if (n < 0) { + n = 0; + while ((lib + n + 1)->board) { + n++; + } + } + element = (lib + n)->board; + break; case KEY_BACKSPACE: case KEY_DELETE: case 127: @@ -354,7 +373,7 @@ int main (int argc, char *argv[]) endwin (); - int n = 0; + n = 0; while ((lib + n)->board) { freeboard ((lib + n)->board); free ((lib + n)->name); -- 2.30.2