Skip to content

👽 Conway's Game of Life implemented in Scala 3 with Airstream and Scala.js

License

Notifications You must be signed in to change notification settings

iyyel/conways-game-of-life

Repository files navigation

Contributors Forks Stargazers Issues MIT License


Game of Life Logo


👽 Conway's Game of Life implemented in Scala 3 with Airstream and Scala.js

Table of Contents

Introduction

The Game of Life, created by John Conway, is a well-known cellular automaton. It features a grid of cells where each cell can either be alive or dead. The evolution of each cell's state over time is determined by straightforward rules:

A live cell with two or three live neighbors continues to live. A dead cell with exactly three live neighbors becomes alive. All other live cells die, and all other dead cells stay dead.

Despite its simplicity, the game can produce intricate and captivating patterns and behaviors, including a fully functional computer or even another instance of the Game of Life.

Here is a Scala 3 implementation of Conway’s Game of Life. This project was developed mainly to get familiar with Scala 3, with the goal of quickly producing a polished and releasable product. You can access the completed project here.

DISCLAIMER: The user-interface may not work equally well on all devices and screen sizes. Feel free to submit a PR if you have a fix :)

Built With

This implementation of the Game of Life is built using the following technologies:

Getting Started

Usage

  • Download or clone this repository
  • Open it in your IDE or text editor of choice
  • Open a terminal and enter npm install then npm run dev (open the localhost link)
  • Open another terminal and enter sbt followed by ~fastOptJS

Play around with the Game of Life!

  • To produce a production build, use npm run build (output will be in the dist folder)

License

Distributed under the MIT License. See LICENSE.md for more information.

Contact

Daniel Larsen (iyyel) - iyyel.io - me@iyyel.io

Acknowledgments

Ivan Yurchenko - https://ivanyu.me - github