From b8c055dbdde4fc3ce946483ee69f76c737888549 Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Mon, 12 Dec 2011 23:23:13 -0500 Subject: Initial commit; it builds, runs, and does nothing! --- (limited to 'src') diff --git a/src/cgol.c b/src/cgol.c new file mode 100644 index 0000000..b6eec4d --- /dev/null +++ b/src/cgol.c @@ -0,0 +1,111 @@ +/* + * src/cgol.c + * Curses Game of Life + * + * Copyright (C) 2011 Patrick "P. J." McDermott + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include +#include +#include +#include + +void usage(const char *invocation); +void init_curses(); +void init_game(); +void fini_game(); +void fini_curses(); + +static int width, height, seedprob, genrate; +static bool *grid_cur, *grid_next; + +int +main(int argc, char **argv) +{ + int opt; + + while ((opt = getopt(argc, argv, "w:h:s:r:n:")) != -1) { + switch (opt) { + case 'w': + width = atoi(optarg); + break; + case 'h': + height = atoi(optarg); + break; + case 's': + seedprob = atoi(optarg); + break; + case 'r': + genrate = atoi(optarg); + break; + default: + usage(argv[0]); + return 1; + } + } + + init_curses(); + init_game(); + + mvprintw(1, 1, "Welcome to cgol!"); + getch(); + + fini_game(); + fini_curses(); + + return 0; +} + +void +init_curses() +{ + initscr(); + noecho(); + raw(); +} + +void +init_game() +{ + size_t size; + + size = sizeof(bool) * width * height; + grid_cur = malloc(size); + memset(grid_cur, 0, size); + grid_next = malloc(size); + memset(grid_next, 0, size); +} + +void +fini_game() +{ + free(grid_cur); + free(grid_next); +} + +void +fini_curses() +{ + endwin(); +} + +void +usage(const char *invocation) +{ + printf("Usage: %s [-w WIDTH] [-h HEIGHT] [-s SEEDPROB] [-r RATE] " + "[-n GENERATIONS]", invocation); +} -- cgit v0.9.1