/// <summary> /// Generates a maze with the given name, in the given size. /// </summary> /// <param name="name">The name.</param> /// <param name="row">The row.</param> /// <param name="col">The col.</param> /// <returns></returns> /// <exception cref="System.ArgumentException">name already taken, re-enter a command</exception> public Maze Generate(string name, int row, int col) { if (dataBase.IsMazeExists(name)) { throw new ArgumentException("name already taken"); } MazeGeneratorLib.DFSMazeGenerator generator = new MazeGeneratorLib.DFSMazeGenerator(); Maze maze = generator.Generate(row, col); maze.Name = name; dataBase.AddMaze(maze); return(maze); }
/// <summary> /// Adds the game. /// </summary> /// <param name="name">The name.</param> /// <param name="r">The r.</param> /// <param name="c">The c.</param> /// <param name="client">The client.</param> /// <exception cref="System.ArgumentException">name already taken, re-enter a command</exception> public void AddGame(string name, int r, int c, string clientId) { if (dataBase.IsGameExists(name)) { throw new ArgumentException("name already taken"); } MazeGeneratorLib.DFSMazeGenerator generator = new MazeGeneratorLib.DFSMazeGenerator(); Maze maze = generator.Generate(r, c); maze.Name = name; MazeGame game = new MazeGame(maze, clientId); dataBase.AddGame(name, game); }
/// <summary> /// Method to generate a maze and add it to a dictionary /// </summary> /// <param name="name"> name of the new maze to generate </param> /// <param name="row"> number of rows </param> /// <param name="col"> number of columns </param> /// <param name="player"> client that wants to create the maze </param> /// <param name="gameType"> single or multi-player maze </param> /// <returns> Returns the new maze </returns> public Maze GenerateMaze(string name, int row, int col, TcpClient player, string gameType) { //Creates the maze Maze newMaze = new MazeGeneratorLib.DFSMazeGenerator().Generate(row, col); newMaze.Name = name; //Adds the current client as player1 to this game MazeGame newGame = new MazeGame(newMaze); if (gameType == "Single") { Console.WriteLine("Single-Player Game '{0}' Added", name); singlePlayerGames.Add(name, newGame); } else //Multi Player { Console.WriteLine("Multi-Player Game '{0}' Added", name); newGame.AddPlayer(player); multiPlayerGames.Add(name, newGame); Console.WriteLine(multiPlayerGames[name].Maze.Name); } return(newMaze); }
public static void CompareSolvers() { MazeGeneratorLib.DFSMazeGenerator generator = new MazeGeneratorLib.DFSMazeGenerator(); MazeLib.Maze maze = generator.Generate(10, 10); // Console.WriteLine(maze.ToString()); string a = maze.ToJSON(); Console.WriteLine(a); MazeAdapter adapter = new MazeAdapter(maze); SearchAlgorithmsLib.Solution <MazeLib.Position> solBFS = new SearchAlgorithmsLib.Solution <MazeLib.Position>(); SearchAlgorithmsLib.BFS <MazeLib.Position> bfs = new SearchAlgorithmsLib.BFS <MazeLib.Position>(); solBFS = bfs.search(adapter); SearchAlgorithmsLib.DFS <MazeLib.Position> dfs = new SearchAlgorithmsLib.DFS <MazeLib.Position>(); SearchAlgorithmsLib.Solution <MazeLib.Position> solDFS = new SearchAlgorithmsLib.Solution <MazeLib.Position>(); solDFS = dfs.search(adapter); Console.WriteLine("in BFS: {0}, in DFS: {1}", bfs.getNumberOfNodesEvaluated(), dfs.getNumberOfNodesEvaluated()); /* Console.WriteLine("Start: {0}, end: {1}", maze.InitialPos,maze.GoalPos); * Console.WriteLine("BFS solution: "); * solBFS.printSolution(); * Console.WriteLine("DFS solution: "); * solDFS.printSolution();*/ }