public TurnResponse Turn(GameState gameState)
        {
            var    turnResponse = new TurnResponse();
            Player player       = gameState.Players.SingleOrDefault(x => x.Me == "true");

            if (player == null)
            {
                return(turnResponse);                             // todo: error handling
            }
            Position preMovePosition = player.Position;
            int      directionToMove = new RandomMoveLogic(gameState.GridSize, preMovePosition).Direction;

            // figure out new position, then send to shoot generator.
            Position postMovePosition = Directions.ConvertDirectionToPosition(directionToMove, preMovePosition);

            int directionToShoot = new RandomShootLogic(gameState.GridSize, postMovePosition).Direction;

            turnResponse.MoveDirection  = directionToMove;
            turnResponse.ShootDirection = directionToShoot;
            turnResponse.PlayerId       = player.Id;

            Thread.Sleep(2000);             // simulate a slow response time
            player.Log();
            turnResponse.Log();
            Console.WriteLine();
            return(turnResponse);
        }