README: Created by: Daniel Murphy, Samuel Swiss and Sahil Kapoor Menu: i) Run Submission ii) Design Changes iii) Project Requirements iv) Limitations v) MiniMax/NegaMax Game Scoring Function i) Run Submission 1. Run Java Application 2. On menu, type a command and press enter: "new" for a new game "load filename" to load a saved game "quit" to quit the game 3.When creating a new game type the player types and press enter to create a player of that type for a game 4. When in a game the following commands can be used: "display" to display the board "undo" to undo a move "redo" to redo an undone move "save" to save a game "moves" to display a list of possible moves "left", "right", "up" or "down" to move in the appropriate direction a valid wall move in format "column row orientation", e.g. g4v a valid pawn move in format "column row", e.g. e6 ii) Design Changes 1. Changed Alpha-Beta MiniMax search to NegaMax 2. Created seperate searches for time and depth limited NegaMax searches 3. Added different types of moves for walls and pawns 4. Added dummy, random and simple AI iii) Project Requirements 1. Generate valid moves using Glendenning's textual format for moves 2. Create User Interface w/save, load, undo, redo and new game 3. Allow input from command line 4. Display board using in terminal using ascii human readable format 5. Random and Sensible look ahead AI 6. AI using MiniMax algorithm limited by depth 5. Iterated AI using MiniMax for time controlled search 6. Javadoc of all classes and interfaces iv) Limitations 1. NegaMax scoring function does not look at all possible moves opponent may place to hinder progress v) MiniMax/NegaMax Game Scoring Function 1. The difference of the shortest paths between the opposing player and the current player