Пример #1
0
        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);
        }