JavaFX checkerboard for fun and cellular automaton experiments

In the mid 80’s I was playing around with Atari BASIC, GFA BASIC and Turbo Pascal. At that time I was also eagerly reading articles published in the magazine Spektrum der Wissenschaft from my father’s bookshelf. I was especially interested in articles belonging to the columns Mathematische Unterhaltung (Mathematical Games) and Computer Kurzweil (Computer Recreations). Here the authors worked out and explained on how to get mathematical and logical puzzles solved or simulated with an ordinary Home Computer.

Quite a few of those puzzles were “played” by the computer on some kind of two dimensional grid or matrix. Lately a special edition with Computer Kurzweil experiments tumbled out of my bookshelf, memories came to mind and as a result I set up the refcodes-checkerboard artifact. And while doing so during summer break, I was reasoning on BoulderDash being a cellular automaton

… with the refcodes-checkerboard artifact I want to get some ease into experimenting with cellular automatons on the Java platform. For a demo application, please refer to the article Fun with cellular automatons, BoulderDash and the Watchdog! which also introduces a swarm intelligence implemented by a cellular automatons.

… Die Zellen eines zellulären Automaten, die auf ihre jeweilige Umgebung reagieren, verhalten sich Mainzer1 zufolge wie eine Schwarmintelligenz…2 (“… According to Mainzer, the cells of a cellular automaton that react to their respective environment behave like a swarming intelligence …”)3

Having the refcodes-checkerboard being a checkerboard server with no real client, I implemented a graphical client and put it into the refcodes-checkerboard-alt-javafx artifact. Whilst starting to refurbish that MERKUR Vision arcade machines, BoulderDash came to my mind.

Didn’t BoulderDash work by the principle of a cellular automaton?

Searching the web a little, I came across a discussion regarding the BoulderDash article (found in the English version of the Wikipedia). That very talk was on whether it can be considered fact that BoulderDash has been implemented by the principle of a cellular automaton or not…

… It may be interesting to note that most of the rules for game object movements in BoulderDash can be implemented efficiently using a cellular automaton. For example, there are four different cells representing butterflies moving in different directions. On each game iteration, if the space ahead or to the right from their path is empty (space cell), the butterfly cell is moved there; otherwise, the cell is not moved, but its direction is changed to next one in counterclockwise order. The spreading of amoeba cells use the help of a pseudo-random number generator which determines the chance of infecting neighboring cells, and there is also an extra counter for the total number of amoeba cells occupied. Also, falling rock has different characteristics than stationary rock, and the transition between these two states takes one iteration. The original implementation on 8-bit computers even used in-place modification in sequential left-to-right, to-top-bottom order to save memory. Extra cell types were used to make sure that cells to the right or bottom would not be updated again …” (see Talk:BoulderDash)

You are welcome to participate e.g. enhancing the refcodes-checkerboard-alt-javafx artifact with even more functionality!

For a demo application, please refer to the blog post Fun with cellular automatons, BoulderDash and the Watchdog!

  1. See Klaus Mainzer at Wikipedia (de), 2019 

  2. See Zelluläre Automaten und Maschine 4.0 by Achim Szepanski, 2018 

  3. See Die Berechnung der Welt. Von der Weltformel zu Big Data (page 161) by Klaus Mainzer, 2014