public void Execute() { Console.Write("Enter maze type ({0}): ", string.Join(", ", validMazeTypes)); string mazeType = Console.ReadLine(); if (string.IsNullOrEmpty(mazeType)) { mazeType = SquareSnake; } if (!validMazeTypes.Any(validMazeType => StringComparer.OrdinalIgnoreCase.Compare(validMazeType, mazeType) == 0)) { throw new ArgumentException(string.Format("Unknown maze type {0}.", mazeType)); } int length = 0; bool invalid = true; while (invalid) { Console.Write("Enter a length: "); string input = Console.ReadLine(); if (string.IsNullOrEmpty(input)) { length = 4; break; } if (input.StartsWith("q", StringComparison.OrdinalIgnoreCase)) { return; } invalid = !int.TryParse(input, out length); } ICreateMazes mazeFactory = null; if (StringComparer.OrdinalIgnoreCase.Compare(mazeType, SquareSnake) == 0) { mazeFactory = new SnakeSquareMazeFactory(length); } else if (StringComparer.OrdinalIgnoreCase.Compare(mazeType, Simple) == 0) { mazeFactory = new SimpleMazeFactory(length); } IMovePlayer maze = mazeFactory.Create(); mazeClient.StartMaze(maze); }
public MazeGame(ICreateMazes factory) { _factory = factory; }