public ClientOfServer Close(string name, ClientOfServer player)
        {
            MultiPlayerInfo mp = multiPlayerOnline[name];

            multiPlayerOnline.Remove(name);
            return(mp.GetTheOtherPlayer(player));
        }
        /// <summary>
        /// Starts the specified of maze.
        /// </summary>
        /// <param name="name">The name of maze.</param>
        /// <param name="rows">The rows of maze.</param>
        /// <param name="cols">The cols of maze.</param>
        /// <param name="host">The host of maze.</param>
        public void Start(string name, int rows, int cols, ClientOfServer host)
        {
            Maze            maze = Generate(name, rows, cols);
            MultiPlayerInfo mp   = new MultiPlayerInfo()
            {
                Host = host,
                Maze = maze
            };

            multiPlayerWaiting.Add(name, mp);
        }
        /// <summary>
        /// Plays the specified move.
        /// </summary>
        /// <param name="move">The move.</param>
        /// <param name="player">The player.</param>
        /// <returns>map of TcpClient, PlayerDirection </returns>
        public Tuple <ClientOfServer, PlayerDirection> Play(string move, ClientOfServer player)
        {
            MultiPlayerInfo mp          = FindMPInfo(player);
            ClientOfServer  otherPlayer = mp.GetTheOtherPlayer(player);
            PlayerDirection pd          = new PlayerDirection()
            {
                GameName = mp.Maze.Name,
                Move     = move
            };

            return(new Tuple <ClientOfServer, PlayerDirection>(otherPlayer, pd));
        }
        /// <summary>
        /// Joins the specified name.
        /// </summary>
        /// <param name="name">The name of maze.</param>
        /// <param name="guest">The guest client.</param>
        /// <returns the maze></returns>
        /// <exception cref="System.Exception">This maze does not exist - " + name</exception>
        public Maze Join(string name, ClientOfServer guest)
        {
            if (!multiPlayerWaiting.ContainsKey(name))
            {
                throw new Exception("This maze does not exist - " + name);
            }
            MultiPlayerInfo mp = multiPlayerWaiting[name];

            mp.Guest = guest;
            multiPlayerOnline[name] = mp;
            multiPlayerWaiting.Remove(name);
            return(mp.Maze);
        }