tIt's working - game-of-life - Conway's Game of Life
 (HTM) git clone git://src.adamsgaard.dk/game-of-life
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) LICENSE
       ---
 (DIR) commit 340a2d4d7fba4f23b3c551aef8d47feb536fd4e6
 (DIR) parent 500323d480e42c227671f46b109dc01290fe5da3
 (HTM) Author: Anders Damsgaard <anders.damsgaard@geo.au.dk>
       Date:   Sat,  8 Mar 2014 16:41:43 +0100
       
       It's working
       
       Diffstat:
         M Makefile                            |       2 +-
         M main.c                              |      11 +++++------
         M rules.c                             |      14 +++++++++-----
         M utility.c                           |      15 +++++++++++++++
         M utility.h                           |       1 +
       
       5 files changed, 31 insertions(+), 12 deletions(-)
       ---
 (DIR) diff --git a/Makefile b/Makefile
       t@@ -1,5 +1,5 @@
        CFLAGS=-Wall -pedantic -g -O2
       -#LDLIBS=-lm
       +#LDLIBS=-lmgl
        
        BIN=gameoflife
        
 (DIR) diff --git a/main.c b/main.c
       t@@ -5,13 +5,13 @@
        #include "utility.h"
        #include "rules.h"
        
       -#define VERSION 0.1
       +#define GOLVERSION 0.1
        
        int main(int argc, char **argv)
        {
            int **cells;
            int **neighbors;
       -    int nx = 10;
       +    int nx = 40;
            int ny = 10;
            int c;
            unsigned int it = 0;
       t@@ -30,7 +30,7 @@ int main(int argc, char **argv)
                case 'v':
                    printf("%s: Conway's Game of Life, version %.1f\n"
                            "Written by Anders Damsgaard, "
       -                    "https://github.com/anders-dc/game-of-life\n", argv[0], VERSION);
       +                    "https://github.com/anders-dc/game-of-life\n", argv[0], GOLVERSION);
                    return 0;
                    break;
                case '?':
       t@@ -56,9 +56,8 @@ int main(int argc, char **argv)
        
            random_population(cells, nx, ny, 0.5);
        
       -    print_matrix("cells", cells, nx, ny);
       +    print_cell_matrix("cells", cells, nx, ny);
        
       -    /*while ((c = getchar()) != 'q') {*/
            while (world_is_dead == 0) {
        
                world_is_dead = find_neighbor_count(cells, neighbors, nx, ny);
       t@@ -66,7 +65,7 @@ int main(int argc, char **argv)
        
                printf("it = %d\n", it);
                print_matrix("neighbors", neighbors, nx, ny);
       -        print_matrix("cells", cells, nx, ny);
       +        print_cell_matrix("cells", cells, nx, ny);
        
                sleep(1);
        
 (DIR) diff --git a/rules.c b/rules.c
       t@@ -25,13 +25,17 @@ int find_neighbor_count(int **cells, int **neighbors, int nx, int ny)
            int i, j, x, y;
            int nneighbors;
        
       -    for (i=1; i<nx-1; i++) {
       -        for (j=1; j<ny-1; j++) {
       +    /*for (i=1; i<nx-1; i++) {
       +        for (j=1; j<ny-1; j++) {*/
       +    for (i=0; i<nx; i++) {
       +        for (j=0; j<ny; j++) {
                    nneighbors = 0;
        
                    for (x=-1; x<2; x++) {
                        for (y=-1; y<2; y++) {
       -                    if (x != 0 && y != 0) {
       +                    if (x != 0 && y != 0 &&
       +                            i+x > 0 && i+x < nx &&
       +                            j+y > 0 && j+y < ny) {
                                nneighbors += cells[i+x][j+y];
                            }
                        }
       t@@ -51,8 +55,8 @@ int find_neighbor_count(int **cells, int **neighbors, int nx, int ny)
        void cell_transitions(int **cells, int **neighbors, int nx, int ny)
        {
            int i, j, nneighbors;
       -    for (i=1; i<nx-1; i++) {
       -        for (j=1; j<ny-1; j++) {
       +    for (i=0; i<nx; i++) {
       +        for (j=0; j<ny; j++) {
                    nneighbors = neighbors[i][j];
        
                    if (cells[i][j] == 1) { /* alive */
 (DIR) diff --git a/utility.c b/utility.c
       t@@ -35,3 +35,18 @@ void print_matrix(char* description, int **M, int nx, int ny)
                printf("\n");
            }
        }
       +
       +void print_cell_matrix(char* description, int **M, int nx, int ny)
       +{
       +    int i, j;
       +    printf("%s:\n", description);
       +    for (j=0; j<ny; j++) {
       +        for (i=0; i<nx; i++) {
       +            if (M[i][j] == 1)
       +                printf("X");
       +            else
       +                printf(".");
       +        }
       +        printf("\n");
       +    }
       +}
 (DIR) diff --git a/utility.h b/utility.h
       t@@ -4,5 +4,6 @@
        int allocate_matrix(int ***M, int nx, int ny);
        void free_matrix(int ***M, int nx);
        void print_matrix(char* description, int **M, int nx, int ny);
       +void print_cell_matrix(char* description, int **M, int nx, int ny);
        
        #endif