internal string BoardStateToString(Point start, Point end) { StringBuilder sBuilder = new StringBuilder(); for (int y = 0; y < CellsHigh; y++) { for (int x = 0; x < CellsWide; x++) { Point pos = new Point(x, y); ScorePath scorePath = GetCellScorePath(pos); MoveDirs allowedDirs = GetCellMoves(pos); if (pos == start) { sBuilder.Append('S'); } else if (pos == end) { sBuilder.Append('E'); } else if (allowedDirs.HasFlag(MoveDirs.FriendWire)) { sBuilder.Append('%'); } else if (scorePath.DirFrom == MoveDirs.Up) { sBuilder.Append("↑"); } else if (scorePath.DirFrom == MoveDirs.Down) { sBuilder.Append("↓"); } else if (scorePath.DirFrom == MoveDirs.Left) { sBuilder.Append("←"); } else if (scorePath.DirFrom == MoveDirs.Right) { sBuilder.Append("→"); } else if (scorePath.DirFrom == MoveDirs.None) { sBuilder.Append(' '); } } sBuilder.AppendLine(); } return(sBuilder.ToString()); }
public static bool IsHorizontal(this MoveDirs dir) { return(dir.HasFlag(MoveDirs.Left) || dir.HasFlag(MoveDirs.Right)); }
public static bool IsVertical(this MoveDirs dir) { return(dir.HasFlag(MoveDirs.Up) || dir.HasFlag(MoveDirs.Down)); }