tIt's working - game-of-life - Conway's Game of Life | |
git clone git://src.adamsgaard.dk/game-of-life | |
Log | |
Files | |
Refs | |
LICENSE | |
--- | |
commit 340a2d4d7fba4f23b3c551aef8d47feb536fd4e6 | |
parent 500323d480e42c227671f46b109dc01290fe5da3 | |
Author: Anders Damsgaard <[email protected]> | |
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(-) | |
--- | |
diff --git a/Makefile b/Makefile | |
t@@ -1,5 +1,5 @@ | |
CFLAGS=-Wall -pedantic -g -O2 | |
-#LDLIBS=-lm | |
+#LDLIBS=-lmgl | |
BIN=gameoflife | |
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], VE… | |
+ "https://github.com/anders-dc/game-of-life\n", argv[0], GO… | |
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); | |
diff --git a/rules.c b/rules.c | |
t@@ -25,13 +25,17 @@ int find_neighbor_count(int **cells, int **neighbors, int … | |
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… | |
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 */ | |
diff --git a/utility.c b/utility.c | |
t@@ -35,3 +35,18 @@ void print_matrix(char* description, int **M, int nx, int n… | |
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"); | |
+ } | |
+} | |
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 |