private void aStarButton_Click(object sender, EventArgs e) { if (isMaze1) { Maze m = new Maze(maze1Char); Artificial_Intelligence ai = new Artificial_Intelligence(); SetGoalMaze(); ai.SetGoalState(goalState); ai.AStar(m); currentPositions = ai.GetPositions(); solution = ai.GetSolution(); UpdateGUI(); } else if (isMaze2) { Maze m = new Maze(maze2Char); Artificial_Intelligence ai = new Artificial_Intelligence(); SetGoalMaze(); ai.SetGoalState(goalState); ai.AStar(m); currentPositions = ai.GetPositions(); solution = ai.GetSolution(); UpdateGUI(); } else if (isMaze3) { Maze m = new Maze(maze3Char); Artificial_Intelligence ai = new Artificial_Intelligence(); SetGoalMaze(); ai.SetGoalState(goalState); ai.AStar(m); currentPositions = ai.GetPositions(); solution = ai.GetSolution(); UpdateGUI(); } }
static void Main(string[] args) { /* Creating the variables used within the main program * Choice -> getting the user input for the menu * maze -> initial maze (the beginning) * goalState -> creating the goal maze for the AI */ char[,] goalState = new char[20, 20]; int choice; char[,] maze = new char[20, 20] { { 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X' }, { 'X', '-', 'X', '-', 'X', '-', '-', 'X', '-', 'X', 'X', 'X', 'X', 'X', 'X', '-', 'X', '-', 'X', 'X' }, { 'E', '-', '-', '-', 'X', 'X', '-', '-', '-', '-', 'X', 'X', 'X', '-', '-', '-', 'X', '-', '-', 'X' }, { 'X', 'X', 'X', '-', 'X', '-', 'X', 'X', '-', 'X', 'X', '-', 'X', '-', 'X', '-', 'X', 'X', '-', 'X' }, { 'X', 'X', '-', '-', 'X', '-', '-', '-', '-', '-', 'X', '-', 'X', 'X', 'X', '-', '-', '-', '-', 'X' }, { 'X', '-', '-', 'X', 'X', '-', 'X', 'X', 'X', 'X', 'X', '-', '-', '-', '-', 'X', 'X', '-', 'X', 'X' }, { 'X', 'X', '-', 'X', 'X', '-', 'X', '-', 'X', 'X', 'X', 'X', '-', 'X', 'X', 'X', 'X', '-', '-', 'X' }, { 'X', '-', '-', '-', '-', '-', 'X', '-', '-', '-', '-', '-', '-', '-', '-', 'X', 'X', 'X', '-', 'X' }, { 'X', '-', 'X', '-', 'X', '-', '-', '-', 'X', 'X', '-', 'X', '-', 'X', '-', 'X', 'X', '-', '-', 'X' }, { 'X', 'X', 'X', '-', 'X', '-', 'X', 'X', 'X', '-', '-', 'X', '-', 'X', 'X', 'X', 'X', '-', 'X', 'X' }, { 'X', '-', 'X', '-', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', '-', '-', '-', '-', 'X', '-', 'X', 'X' }, { 'X', '-', 'X', '-', 'X', '-', 'X', '-', '-', 'X', 'X', 'X', 'X', 'X', 'X', '-', '-', '-', '-', 'X' }, { 'X', '-', '-', '-', 'X', '-', '-', 'X', '-', '-', 'X', '-', '-', '-', 'X', '-', 'X', 'X', '-', 'X' }, { 'X', 'X', '-', 'X', 'X', '-', 'X', 'X', '-', 'X', 'X', '-', 'X', 'X', '-', '-', 'X', '-', '-', 'X' }, { 'X', '-', '-', '-', '-', '-', 'X', '-', '-', '-', 'X', '-', 'X', 'X', 'X', '-', 'X', '-', 'X', 'X' }, { 'X', '-', 'X', '-', 'X', '-', 'X', '-', 'X', '-', 'X', '-', '-', '-', 'X', '-', 'X', '-', 'X', 'X' }, { 'X', '-', 'X', '-', 'X', '-', '-', '-', 'X', '-', 'X', '-', 'X', '-', 'X', 'X', '-', '-', '-', 'X' }, { 'X', '-', '-', '-', 'X', '-', 'X', '-', 'X', '-', '-', '-', 'X', '-', 'X', 'X', '-', 'X', '-', 'X' }, { 'X', '-', 'X', '-', '-', '-', 'X', '-', 'X', 'X', '-', 'X', 'X', '-', '-', '-', '-', 'X', 'X', 'X' }, { 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'C', 'X', 'X', 'X' } }; // A test maze to make sure it solves for the optimal path /* * char[,] maze = new char[20, 20] { * { 'X', 'E', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X'}, * { 'X', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', 'X', 'X', 'X', 'X'}, * { 'X', '-', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', '-', 'X', 'X', 'X', 'X'}, * { 'X', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', 'X', 'X', 'X', '-', 'X', 'X', 'X', 'X'}, * { 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', '-', 'X', 'X', 'X', '-', 'X', 'X', 'X', 'X'}, * { 'X', 'X', 'X', '-', '-', '-', 'X', '-', '-', '-', 'X', '-', 'X', 'X', 'X', '-', 'X', 'X', 'X', 'X'}, * { 'X', 'X', 'X', '-', 'X', '-', 'X', '-', 'X', '-', 'X', '-', 'X', 'X', 'X', '-', 'X', 'X', 'X', 'X'}, * { 'X', 'X', 'X', '-', 'X', '-', 'X', '-', 'X', '-', 'X', '-', 'X', 'X', 'X', '-', 'X', 'X', 'X', 'X'}, * { 'X', 'X', 'X', '-', 'X', '-', 'X', '-', 'X', '-', 'X', '-', 'X', 'X', 'X', '-', 'X', 'X', 'X', 'X'}, * { 'X', 'X', 'X', '-', 'X', '-', 'X', '-', 'X', '-', 'X', '-', 'X', 'X', 'X', '-', 'X', 'X', 'X', 'X'}, * { 'X', 'X', 'X', '-', 'X', '-', 'X', '-', 'X', '-', 'X', '-', 'X', 'X', 'X', '-', 'X', 'X', 'X', 'X'}, * { 'X', 'X', 'X', '-', 'X', '-', 'X', '-', 'X', '-', 'X', '-', 'X', 'X', 'X', '-', 'X', 'X', 'X', 'X'}, * { 'X', 'X', 'X', '-', 'X', '-', 'X', '-', 'X', '-', 'X', '-', 'X', 'X', 'X', '-', 'X', 'X', 'X', 'X'}, * { 'X', 'X', 'X', '-', 'X', '-', 'X', '-', 'X', '-', 'X', '-', 'X', 'X', 'X', '-', 'X', 'X', 'X', 'X'}, * { 'X', 'X', 'X', '-', 'X', '-', 'X', '-', 'X', '-', 'X', '-', 'X', 'X', 'X', '-', 'X', 'X', 'X', 'X'}, * { 'X', 'X', 'X', '-', 'X', '-', '-', '-', 'X', '-', '-', '-', 'X', 'X', 'X', '-', 'X', 'X', 'X', 'X'}, * { '-', '-', '-', '-', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', '-', 'X', 'X', 'X', 'X'}, * { '-', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', '-', 'X', 'X', 'X', 'X'}, * { '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', 'X', 'X', 'X', 'X'}, * { 'X', 'X', 'X', 'C', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X'} * }; */ // generating the goal maze by replacing the original maze 'E' with 'C' and the 'C' with '-' for (int i = 0; i < maze.GetLength(0); i++) { for (int j = 0; j < maze.GetLength(1); j++) { if (maze[i, j] == 'E') { goalState[i, j] = 'C'; } else if (maze[i, j] == 'C') { goalState[i, j] = '-'; } else { goalState[i, j] = maze[i, j]; } } } choice = GetInput(); Console.WriteLine("\n************ Start ************"); if (choice == 1) { Maze m = new Maze(maze); Artificial_Intelligence ai = new Artificial_Intelligence(); ai.SetGoalState(goalState); ai.BFS(m); } else if (choice == 2) { Maze m = new Maze(maze); Artificial_Intelligence ai = new Artificial_Intelligence(); ai.SetGoalState(goalState); ai.UFS(m); } else if (choice == 3) { Maze m = new Maze(maze); Artificial_Intelligence ai = new Artificial_Intelligence(); ai.SetGoalState(goalState); ai.AStar(m); } else { Console.WriteLine("Error with Choice"); } }