//public void OnBallInPlay(EventHandler<BallEventArgs> e)
        /*
            EventHandler está dizendo para outros métodos que seus manipuladores de evento
            precisam ter dois parâmetros: Um 'objet sender' e uma referência a 'EventArgs e'
         */
        // MÉTODO QUE DISPARA O EVENTO
        protected void OnBallInPlay(BallEventArgs e)
        {
            //if (BallInPlay != null)
            //{
            //    BallInPlay(this, e);
            //}

                // ↑↑↑ MESMO TRATAMENTO ↓↓↓

            BallInPlay?.Invoke(this, e);
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Console.WriteLine("****************************");

            Bat bat = bola.GetNewBat();
            BallEventArgs ballEventArgs = new BallEventArgs(
                (int)numericUpDown2.Value,
                (int)numericUpDown1.Value);

            bat.HitTheBall(ballEventArgs);

            Console.WriteLine("****************************");
        }
        // DISPARA O EVENTO
        public void HitTheBall(BallEventArgs e)
        {
            //if (hitBallCallback != null)
            //{
            //    hitBallCallback(e);
            //}

            // ↑↑↑ MESMO TRATAMENTO ↓↓↓

            hitBallCallback?.Invoke(e);

            ///////

            if (e.Distancia <= 80 && e.Trajetoria >= 50)
            {
                Console.WriteLine("Bola atingida pelo Bastão");
            }
            else
            {
                Console.WriteLine("Batedor não acertou a bola");
            }
        }