This was my first project exploring search algorithm. In this project, I use A* algorithm with the Manhattan distance to estimate the optimal solution. I also used multithreading to compute the solution so that the program doesn't freeze as it explores deeper and deeper into the tree.
The user can generate state board randomly, then the program searches for the optimal solution and displays the solution in the left sidebar. Afterward, the user can play with the GUI and enjoy the game. :)
If you are interested in browsing my code, please contact me and I will gladly share with you my private github repository.