Esempio n. 1
0
        public GameMoveType GetNextMove(GameState gameState, IGameInteractionService interactionService)
        {
            while(true)
            {
                var move = GameMoveType.None;
                var key = Console.ReadKey ().Key;

                switch(key)
                {
                // Quit the program if ESC is pressed.
                case ConsoleKey.Escape:
                    if(this.GameQuitRequested != null)
                    {
                        this.GameQuitRequested ();
                    }
                    return GameMoveType.None;

                case ConsoleKey.UpArrow:
                    // Arrow up = move the item below the empty space UP.
                    move = GameMoveType.MoveItemBelow;
                    break;

                case ConsoleKey.DownArrow:
                    // Arrow down = move the item above the empty space DOWN.
                    move = GameMoveType.MoveItemAbove;
                    break;

                case ConsoleKey.LeftArrow:
                    // Arrow left = move the item right of the empty space LEFT.
                    move = GameMoveType.MoveItemRight;
                    break;

                case ConsoleKey.RightArrow:
                    // Arrow right = move the item left of the empty space RIGHT.
                    move = GameMoveType.MoveItemLeft;
                    break;

                default:
                    Console.Beep ();
                    break;
                }

                if(interactionService.CanMove(gameState.GameField, move))
                {
                    return move;
                }
            }
        }