heres a javscript version, please take a look and see what you think

I tried to add in a frozen variable to the cells, and also attempted to
adjust the makemove method such that it handles simultaneous movement...
but not entirelly sure if it will do it correctly.