Example #1
0
        /// <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);
        }
Example #2
0
        /// <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);
        }
Example #3
0
        /// <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);
        }
Example #4
0
        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();*/
        }