Exemple #1
0
        private StringBuilder AppendPathWithMatrix(beMobileMaze maze, PathInMaze path)
        {
            StringBuilder pathAsTextMatrix = new StringBuilder();

            var pathID = string.Format("Path: {0} matlab path matrix:\t", path.ID);

            var pathElements = path.PathAsLinkedList.ToList();

            pathAsTextMatrix.Append(pathID);

            pathAsTextMatrix.Append(" [ ");

            var grid = new MazeGridTraversal(maze);

            grid.travers(
                s => {
                string content = "0";

                pathAsTextMatrix.Append(content);

                if (s.ColumnsLeft > 0)
                {
                    pathAsTextMatrix.Append(", ");
                }

                if (s.ColumnsLeft == 0)
                {
                    pathAsTextMatrix.Append("; ");
                }
            },
                (u, s) => {
                var currentUnitIsPathElement = pathElements.Any(
                    e => e.Unit.GridID == new Vector2(s.Column, s.Row));

                if (currentUnitIsPathElement)
                {
                    pathAsTextMatrix.Append("2");
                }
                else
                {
                    pathAsTextMatrix.Append("1");
                }


                if (s.ColumnsLeft > 0)
                {
                    pathAsTextMatrix.Append(", ");
                }

                if (s.ColumnsLeft == 0)
                {
                    pathAsTextMatrix.Append("; ");
                }
            }
                );

            #region

            //for (int y_i = 0; y_i < maze.Rows; y_i++)
            //{
            //    StringBuilder rowAsLine = new StringBuilder();

            //    for (int x_i = 0; x_i < maze.Columns; x_i++)
            //    {

            //        var currentUnitIsPathElement = pathElements.Any(e => e.Unit.GridID == new UnityEngine.Vector2(x_i, y_i));

            //        if (maze[x_i, y_i] == null)
            //        {
            //            rowAsLine.Append("0");
            //        }
            //        else if (currentUnitIsPathElement)
            //        {
            //            rowAsLine.Append("2");
            //        }
            //        else
            //        {
            //            rowAsLine.Append("1");
            //        }

            //        if (x_i != maze.Columns - 1)
            //            rowAsLine.Append(", ");
            //    }

            //    if (y_i != maze.Rows - 1)
            //    {
            //        rowAsLine.Append("; ");
            //    }

            //    pathAsTextMatrix.Append(rowAsLine.ToString());
            //}

            #endregion original

            pathAsTextMatrix.Append(" ] ");

            return(pathAsTextMatrix);
        }
Exemple #2
0
        private StringBuilder AppendMazeMatrix(beMobileMaze maze)
        {
            var traversal = new MazeGridTraversal(maze);

            StringBuilder mazeAsTextMatrix = new StringBuilder();

            var mazeID = string.Format("Maze: {0} matlab matrix:\t", maze.name);

            mazeAsTextMatrix.Append(mazeID);

            mazeAsTextMatrix.Append(" [ ");

            traversal.travers(
                s => {
                string content = "0";

                mazeAsTextMatrix.Append(content);

                if (s.ColumnsLeft > 0)
                {
                    mazeAsTextMatrix.Append(", ");
                }

                if (s.ColumnsLeft == 0)
                {
                    mazeAsTextMatrix.Append("; ");
                }
            },
                (u, s) => {
                OpenDirections openDirectionsCode = u.WaysOpen;

                OpenDirections directions = ValidateOpenDirections(u);

                if (openDirectionsCode != directions)
                {
                    Debug.Log(u.GridID + "Has wrong directions code - Correct during export!");
                }

                string content = ((int)openDirectionsCode).ToString();

                mazeAsTextMatrix.Append(content);

                if (s.ColumnsLeft > 0)
                {
                    mazeAsTextMatrix.Append(", ");
                }

                if (s.ColumnsLeft == 0)
                {
                    mazeAsTextMatrix.Append("; ");
                }
            });

            #region original
            //for (int y_i = maze.Rows - 1; y_i >= 0; y_i--)
            //{
            //    StringBuilder rowAsLine = new StringBuilder();

            //    for (int x_i = 0; x_i < maze.Columns; x_i++)
            //    {
            //        if (maze[x_i, y_i] == null)
            //        {
            //            rowAsLine.Append("0");
            //        }
            //        else
            //        {
            //            rowAsLine.Append("1");
            //        }

            //        if (x_i < maze.Columns - 1)
            //            rowAsLine.Append(", ");

            //    }

            //    if (y_i != 0)
            //    {
            //        rowAsLine.Append("; ");

            //    }


            //    mazeAsTextMatrix.Append(rowAsLine.ToString());
            //}
            #endregion

            mazeAsTextMatrix.Append(" ]");
            return(mazeAsTextMatrix);
        }