Purpose: There is a famous puzzle called the 15-puzzle (feel free to look it up on the internet - eg en.wikipedia.org/wiki/15 puzzle). In this puzzle there is a frame that could hold 16 tiles in a 4x4 configuration, but the frame contains only 15 tiles where each tile is labeled with a number between 1 and 15. Since one of the locations is empty, it is possible to slide another tile (from above/below/right/left of the empty location) into this location. The goal of the puzzle is to reach the point where the numbers are organized so that they read (top to bottom, left to right) 1, 2, 3,..., 15, space. The diagram below shows a very simple example with the final solution on the right.
You will be writing a Java program to allow people to play the 24-puzzle (the obvious variant where the frame is 5x5) puzzle) in a text based context. My goal is that you recall how to enter programs (probably using jGrasp), how to write a small/simple program, how to compile and debug your work, and learn how to submit your work via moodle. This is meant to be a review project.
Requirements: To complete this project you will write two classes and one text file.
Create a file called Board.java which will be the "guts" of the project. This class will likely contain a field int theFrame (a 5x5 integer array), a method readInitialBoard(String fileName), a method makeMove(int number), a method showBoard(), and a method isCorrect(). Each method does exactly what a reasonable person would expect. You are welcome to have other fields and methods
Create a file called Driver1.java which will interact with the user and "run" your program. There is a sample interaction below. You should have your program match the style/sytax as closely as possible. Due to class size, some of the grading of projects gets automated which means deciding to go with a di↵erent format for input or output will likely result in losing points even if you think "my way is just as good as his". Typically, this class would create an instance of Board.java, fill the board with the information from the file input.txt (a sample is below: 0 indicates the empty position). Then it would repeatedly ask the user for a command and perform that command. Legal commands would include: help, quit, and move. It ends if the user quits or the problem is solved.
Create a file called status.txt which contains your name and a short (2-10 sentence) description of the status of your program. This file should be an ascii file. Though you may create it with MS Word (or notepad/wordpad/jGrasp/etc), you should be certain that it is a text file.