Cellular Automata

Conway's Game of Life

A cellular automaton playground with pattern editing, playback controls, randomization, wrapped neighbor logic, and live population history.

JavaScript
p5.js
Cellular automata
Conway's Game of Life preview

Employer signal

What This Project Shows

This project shows careful handling of deterministic state changes, where one bad update order can corrupt the entire next generation.

Problem

What Needed To Be Solved

Game of Life is often presented as a tiny ruleset, but building an interactive version requires preventing user edits, playback timing, and next-state computation from interfering with each other.

Approach

How I Built The Solution

I kept the grid update as a separate step function and tracked population history independently, so the simulation could be paused, edited, randomized, and graphed without mixing concerns.

Outcome

What It Demonstrates

The project is a clear example of state-machine thinking and UI control design around a deterministic algorithm.

Evidence From Source

Source signal

The old sketch stores `cell_count_history`, uses `stepGame(len_x, len_y)`, and maintains a bounded history array for the population graph.

Practical signal

The controls show attention to the whole user workflow: pause, edit, observe, randomize, then step again.