Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mr-ema/zell-life

Conway's Game of Life using the Zig programming language and the Raylib library for graphics.
https://github.com/mr-ema/zell-life

conways-game-of-life game-of-life raygui raylib state-machine zig

Last synced: about 2 months ago
JSON representation

Conway's Game of Life using the Zig programming language and the Raylib library for graphics.

Awesome Lists containing this project

README

        

# Zig Conway's Game Of Life
This is a simple implementation of Conway's Game of Life using the Zig
programming language and the Raylib library for graphics.

## Navigation
- [Demo](#demo)
- [Features](#features)
- [Default Bindings](#default-bindings)
- [How To Build](#how-to-build-and-run-it)

## Resources
- [DockerFile For Raylib Projects](https://gist.github.com/mr-ema/d78ec7fefb8ea1ed8b2907eb2f0dc9da)
- [Nix Shell For Raylib Projects](https://github.com/mr-ema/dotfiles/blob/main/nixos/shells/raylib.nix)
- [Zig](https://ziglang.org)
- [Awesome Zig](https://github.com/C-BJ/awesome-zig)
- [Raylib](https://www.raylib.com)
- [Zig Raylib Bindings](https://github.com/ryupold/raylib.zig)
- [Zig Showdown](https://github.com/zig-community/Zig-Showdown)

## Features
- [x] Pause the simulation (with key)
- [x] Save/Load grid from file
- [x] Zoom in and out
- [x] Configurable speed

## Planned
- [ ] Multiple grids
- [ ] Load/Save configuration using a json file
- [ ] Improve debug logging and errors
- [ ] Custom patterns
- [ ] (UI) Improved user interface for better usability and aesthetics
- [ ] (UI) add a toast notification system to show errors and useful info
- [ ] Performance optimization for handling larger grids and more complex operations
- [ ] Advanced features for managing multiple grids simultaneously

## Demo
![Demo](https://github.com/mr-ema/zell-life/blob/main/docs/demo.gif)

## Default Bindings
| Action | Binding |
| --------------------------------- | --------------------------------- |
| Pause Simulation | `` |
| Purge Life | `` |
| Toggle Edit Mode | `` |
| Zoom In | `<=>` or `` |
| Zoom Out | `<->` or `` |
| Move Cam Around | `` |
| Toggle Cell State (Edit Mode) | `` |

## How To Build And Run It
Before you start, make sure you have the required dependencies for
raylib installed. Refer to the official [raylib - build and installation
guide](https://github.com/raysan5/raylib#build-and-installation) for
instructions on setting up the necessary environment.

```
git clone https://github.com/mr-ema/zell-life
```
```
cd ./zell-life
```
```
zig build run
```