This is a great idea. I am sure the code is pretty demanding too. My humble feedback that after a while, you get a bit lost visually. Maybe having a way to reset a square to its original position? Or backtrack? Not sure. Other than that, great effort!!