Initial commit of conway's game of life

This commit is contained in:
A.M. Rowsell 2023-05-28 02:01:36 -04:00
commit 9c67c06b7d
Signed by: amr
GPG key ID: 0B6E2D8375CF79A9

73
conway.c Normal file
View file

@ -0,0 +1,73 @@
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include <stdint.h>
#include <wchar.h>
#include <locale.h>
void printGrid(int gridX, int gridY, int **arr) {
// print the array for debugging
wprintf(L"%lc", 0x2554);
for(int j = 0; j < gridY; j++) {
wprintf(L"%lc", 0x2550);
}
wprintf(L"%lc", 0x2557);
wprintf(L"\n");
for(int j = 0; j < gridY; j++) {
wprintf(L"%lc", 0x2551);
for(int i = 0; i < gridX; i++) {
wprintf(L"%lc", ((arr[i][j] == 1) ? 0x0023 : 0x0020));
}
wprintf(L"%lc\n", 0x2551);
}
wprintf(L"%lc", 0x255A);
for(int j = 0; j < gridY; j++) {
wprintf(L"%lc", 0x2550);
}
wprintf(L"%lc", 0x255D);
return;
}
int main(int argc, char *argv[]) {
if(argc < 3) {
printf("Usage: conway <xsize> <ysize> [seed]\n");
exit(255);
}
setlocale(LC_CTYPE, "");
int gridX, gridY, seed = 0, generation = 0;
for(int i = argc - 1; i > 0; i--) {
switch(i) {
case 1:
gridX = atoi(argv[i]);
break;
case 2:
gridY = atoi(argv[i]);
break;
case 3:
seed = atoi(argv[i]);
break;
}
}
if(seed == 0) {
time_t t;
srand((unsigned) time(&t));
} else {
srand(seed);
}
// dynamically allocate the 2D array, could be quite large!
int *arr[gridX];
for(int i = 0; i < gridY; i++) {
arr[i] = (int *)malloc(gridY * sizeof(int));
}
// seed the array
for(int i = 0; i < gridX; i++) {
for(int j = 0; j < gridY; j++) {
arr[i][j] = (rand() % 2 == 0) ? 1 : 0;
}
}
printGrid(gridX, gridY, arr);
return 0;
}