JavaFX checkerboard for fun and cellular automaton experiments

JavaFX checkerboard for fun and cellular automaton experiments

During summer break I was doing some thinking on Boulder Dash being a cellular automaton

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 …

Some chessmen on a far too large checkerboard

… with the refcodes-checkerboard artifact I want to get some ease into experimenting with cellular automatons on the Java platform

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, Boulder Dash came to my mind.

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

Boulder Dash's Rockford in the checkerboard

Searching the web a little, I came across a discussion regarding the Boulder Dash article (found in the English version of the Wikipedia). That very talk was on whether it can be considered fact that Boulder Dash 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 Boulder Dash 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:Boulder Dash)

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

comments powered by Disqus