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); }
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); }