public void SetWallOn(string value) { if (value == "L") { this.WallOn = WallOn.Left; } else { this.WallOn = WallOn.Right; } }
public static (int X, int Y, Face Face) Next(this Face face, WallOn wallOn, int x, int y) { switch (face) { default: case Face.Right: if (wallOn == WallOn.Left) { return(x, y - 1, Face.Up); } else { return(x, y + 1, Face.Down); } case Face.Left: if (wallOn == WallOn.Left) { return(x, y + 1, Face.Down); } else { return(x, y - 1, Face.Up); } case Face.Down: if (wallOn == WallOn.Left) { return(x + 1, y, Face.Right); } else { return(x - 1, y, Face.Left); } case Face.Up: if (wallOn == WallOn.Left) { return(x - 1, y, Face.Left); } else { return(x + 1, y, Face.Right); } } }
public static Face Rotate(this Face face, WallOn wallOn) { if (wallOn == WallOn.Left) { switch (face) { case Face.Down: return(Face.Left); case Face.Left: return(Face.Up); case Face.Up: return(Face.Right); default: case Face.Right: return(Face.Down); } } else { switch (face) { case Face.Down: return(Face.Right); case Face.Left: return(Face.Down); case Face.Up: return(Face.Left); default: case Face.Right: return(Face.Up); } } }