static void Main(string[] args) { // Dependencies: var inputController = new UserInputController(); var mapGenerator = new MapGenerator(); Console.CursorVisible = false; var map = mapGenerator.CreateMap(8, 10, 4); mapGenerator.DrawMap(map.MapArray); var startPositon = map.Rooms[0].GetCenter(); var userPosition = new UserPosition(startPositon[0], startPositon[1]); Console.SetCursorPosition(userPosition.XPosition, userPosition.YPosition); Console.WriteLine("@"); while (true) { var input = Console.ReadKey(); if (input.Key == ConsoleKey.Escape) { break; } userPosition = inputController.HandleInput(input, userPosition, map.MapArray); mapGenerator.DrawMap(map.MapArray); Console.SetCursorPosition(userPosition.XPosition, userPosition.YPosition); Console.WriteLine("@"); } while (Console.ReadKey().Key != ConsoleKey.Escape) { } }
public UserPosition HandleInput(ConsoleKeyInfo keyInfo, UserPosition userPosition, Tile[,] map) { switch (keyInfo.Key) { case ConsoleKey.UpArrow: var moveUpAttempt = map[(userPosition.YPosition - 1), userPosition.XPosition]; if (moveUpAttempt.IsWalkable) { userPosition.YPosition--; } break; case ConsoleKey.DownArrow: var moveDownAttempt = map[(userPosition.YPosition + 1), userPosition.XPosition]; if (moveDownAttempt.IsWalkable) { userPosition.YPosition++; } break; case ConsoleKey.LeftArrow: var moveLeftAttempt = map[userPosition.YPosition, (userPosition.XPosition - 1)]; if (moveLeftAttempt.IsWalkable) { userPosition.XPosition--; } break; case ConsoleKey.RightArrow: var moveRightAttempt = map[userPosition.YPosition, (userPosition.XPosition + 1)]; if (moveRightAttempt.IsWalkable) { userPosition.XPosition++; } break; } return(userPosition); }