Skip to content

jerr-it/cellmaker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cellmaker


Library for simulation of cellular automata, like Conways Game of Life

How to use

Compile:

make 
./main

or

gcc -o automaton main.c CellularAutomata/CellularAutomaton.h CellularAutomata/CellularAutomaton.c
./automaton

Visit main.c for complete file example.

Include:

#include "CellularAutomata/CellularAutomaton.h"

Define your rules:

//At what neighbor count will a cell survive the current iteration?
unsigned int survive[] = { 2, 3 };
size_t       sSize     = sizeof(survive) / sizeof(unsigned int);

//At what neighbor count will a cell get revived in the current iteration?
unsigned int revive[] = { 3 };
size_t       rSize    = sizeof(revive) / sizeof(unsigned int);

Create from array:

bool arr[] =
{
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 1, 0, 0, 1, 0, 0, 0,
    0, 0, 1, 0, 1, 1, 0, 1, 0, 0,
    0, 0, 0, 1, 0, 0, 1, 0, 0, 0,
    0, 0, 0, 1, 0, 0, 1, 0, 0, 0,
    0, 0, 1, 0, 1, 1, 0, 1, 0, 0,
    0, 0, 0, 1, 0, 0, 1, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
 CellularAutomaton autom = newAutomatonFromArray(arr, survive, sSize, revive, rSize, 10, 10);

Keep in mind that this wraps around the edges, meaning that e.g. cells at the right edge neighbor the cells on the left edge.

Initialize randomly:

srand(time(NULL));
//0.4 means the area will be alive by 40%
CellularAutomaton autom = newAutomaton(survive, sSize, revive, rSize, 0.4, 20, 20);

Run steps:

for (int i = 0; i < 40; i++)
{
    print(autom);
    tick(autom);
    printf("\n");
}

Print will print the automaton onto the console. However you can render it however you like by accessing the automatons buffer directly. It's a linear array of bools. Retrieve it by using:;

bool* usedBuffer = currentBuffer(autom);

Free memory:

freeAutomaton(autom);

About

Multi-threaded library for cellular automata

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published